Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # | 2 # |
| 3 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 3 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 4 # for details. All rights reserved. Use of this source code is governed by a | 4 # for details. All rights reserved. Use of this source code is governed by a |
| 5 # BSD-style license that can be found in the LICENSE file. | 5 # BSD-style license that can be found in the LICENSE file. |
| 6 | 6 |
| 7 import glob | 7 import glob |
| 8 import gsutil | 8 import gsutil |
| 9 import hashlib | 9 import hashlib |
| 10 import imp | 10 import imp |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 21 | 21 |
| 22 BUILD_OS = None | 22 BUILD_OS = None |
| 23 DART_PATH = None | 23 DART_PATH = None |
| 24 TOOLS_PATH = None | 24 TOOLS_PATH = None |
| 25 | 25 |
| 26 GSU_PATH_REV = None | 26 GSU_PATH_REV = None |
| 27 GSU_PATH_LATEST = None | 27 GSU_PATH_LATEST = None |
| 28 GSU_API_DOCS_PATH = None | 28 GSU_API_DOCS_PATH = None |
| 29 GSU_API_DOCS_BUCKET = 'gs://dartlang-api-docs' | 29 GSU_API_DOCS_BUCKET = 'gs://dartlang-api-docs' |
| 30 | 30 |
| 31 CHANNEL = None | |
| 32 PLUGINS_BUILD = None | |
| 31 REVISION = None | 33 REVISION = None |
| 34 SYSTEM = None | |
| 32 TRUNK_BUILD = None | 35 TRUNK_BUILD = None |
| 33 PLUGINS_BUILD = None | |
| 34 | 36 |
| 35 NO_UPLOAD = None | 37 NO_UPLOAD = None |
| 36 | 38 |
| 37 def GetUtils(): | 39 DART_DIR = os.path.abspath(os.path.join(__file__, '..', '..', '..')) |
| 38 '''Dynamically load the tools/utils.py python module.''' | 40 utils = imp.load_source('utils', os.path.join(DART_DIR, 'tools', 'utils.py')) |
| 39 dart_dir = os.path.abspath(os.path.join(__file__, '..', '..', '..')) | 41 bot_utils = imp.load_source('bot_utils', |
| 40 return imp.load_source('utils', os.path.join(dart_dir, 'tools', 'utils.py')) | 42 os.path.join(DART_DIR, 'tools', 'bots', 'bot_utils.py')) |
| 41 | 43 |
| 42 utils = GetUtils() | 44 def DartArchiveFile(local_path, remote_path, create_md5sum=False): |
| 45 # Copy it to the new unified gs://dart-archive bucket | |
| 46 # TODO(kustermann/ricow): Remove all the old archiving code, once everything | |
| 47 # points to the new location | |
| 48 gsutil = bot_utils.GSUtil() | |
| 49 gsutil.execute(['cp', '-a', 'public-read', local_path, remote_path]) | |
|
ricow1
2013/09/16 11:51:30
how about a copyPublic method in GSUtil class?
kustermann
2013/09/16 14:15:54
Added upload/remove with named parameters for publ
| |
| 50 if create_md5sum: | |
| 51 # 'local_path' may have a different filename than 'remote_path'. So we need | |
| 52 # to make sure the *.md5sum file contains the correct name. | |
| 53 assert '/' in remote_path and not remote_path.endswith('/') | |
| 54 mangled_filename = remote_path[remote_path.rfind('/') + 1:] | |
| 55 local_md5sum = bot_utils.CreateChecksumFile(local_path, mangled_filename) | |
| 56 gsutil.execute(['cp', '-a', 'public-read', local_md5sum, | |
| 57 remote_path + '.md5sum']) | |
| 58 | |
| 59 def DartArchiveUploadEditorZipFile(zipfile): | |
| 60 if CHANNEL == 'trunk': return | |
|
ricow1
2013/09/16 11:51:30
add a todo here saying why we do this
kustermann
2013/09/16 14:15:54
Done.
| |
| 61 namer = bot_utils.GCSNamer(CHANNEL, bot_utils.ReleaseType.RAW) | |
| 62 gsutil = bot_utils.GSUtil() | |
| 63 | |
| 64 basename = os.path.basename(zipfile) | |
| 65 system = None | |
| 66 arch = None | |
| 67 if basename.startswith('darteditor-linux'): | |
|
ricow1
2013/09/16 11:51:30
shouldn't we pass this info along instead of extra
kustermann
2013/09/16 14:15:54
I don't know what you mean by passing it along.
b
| |
| 68 system = 'linux' | |
| 69 elif basename.startswith('darteditor-mac'): | |
| 70 system = 'macos' | |
| 71 elif basename.startswith('darteditor-win'): | |
| 72 system = 'windows' | |
| 73 | |
| 74 if basename.endswith('-32.zip'): | |
| 75 arch = 'ia32' | |
| 76 elif basename.endswith('-64.zip'): | |
| 77 arch = 'x64' | |
| 78 | |
| 79 if system and arch: | |
| 80 for revision in [REVISION, 'latest']: | |
| 81 editor_dir = namer.editor_directory(revision) | |
| 82 destination_zipfile = namer.editor_zipfilename(system, arch) | |
| 83 DartArchiveFile(zipfile, editor_dir + '/' + destination_zipfile, | |
|
ricow1
2013/09/16 11:51:30
how about a namer.editor_zipfilepath instead, that
kustermann
2013/09/16 14:15:54
Added filepath functions in addition to filename/d
| |
| 84 create_md5sum=True) | |
|
ricow1
2013/09/16 11:51:30
else:
throw an error?
kustermann
2013/09/16 14:15:54
I added an assert (I thought we could call this fu
| |
| 85 | |
| 86 def DartArchiveUploadUpdateSite(local_path): | |
| 87 if CHANNEL == 'trunk': return | |
| 88 namer = bot_utils.GCSNamer(CHANNEL, bot_utils.ReleaseType.RAW) | |
| 89 gsutil = bot_utils.GSUtil() | |
| 90 for revision in [REVISION, 'latest']: | |
| 91 update_site_dir = namer.editor_eclipse_update_directory(revision) | |
| 92 try: | |
| 93 gsutil.execute(['rm', '-R', update_site_dir]) | |
|
ricow1
2013/09/16 11:51:30
isn't this asking for a race condition?
kustermann
2013/09/16 14:15:54
Not AFAIK. Please explain.
ricow1
2013/09/16 15:11:28
If people are using the web interface to browse th
| |
| 94 except: | |
| 95 # Ignore this, in the general case there is nothing. | |
| 96 pass | |
| 97 gsutil.execute(['cp', '-a', 'public-read', '-R', | |
| 98 local_path, update_site_dir]) | |
| 99 | |
| 100 def DartArchiveUploadSDKs(system, sdk32_zip, sdk64_zip): | |
| 101 if CHANNEL == 'trunk': return | |
| 102 namer = bot_utils.GCSNamer(CHANNEL, bot_utils.ReleaseType.RAW) | |
| 103 for revision in [REVISION, 'latest']: | |
| 104 sdk_dir = namer.sdk_directory(revision) | |
| 105 path32 = sdk_dir + '/' + namer.sdk_zipfilename(system, 'ia32', 'release') | |
|
ricow1
2013/09/16 11:51:30
the latest one will already be there right, will t
kustermann
2013/09/16 14:15:54
Not AFAIK. Please explain.
ricow1
2013/09/16 15:11:28
latest will already be there
| |
| 106 path64 = sdk_dir + '/' + namer.sdk_zipfilename(system, 'x64', 'release') | |
| 107 DartArchiveFile(sdk32_zip, path32, create_md5sum=True) | |
| 108 DartArchiveFile(sdk64_zip, path64, create_md5sum=True) | |
| 109 | |
| 43 | 110 |
| 44 class AntWrapper(object): | 111 class AntWrapper(object): |
| 45 """A wrapper for ant build invocations""" | 112 """A wrapper for ant build invocations""" |
| 46 | 113 |
| 47 _antpath = None | 114 _antpath = None |
| 48 _bzippath = None | 115 _bzippath = None |
| 49 _propertyfile = None | 116 _propertyfile = None |
| 50 | 117 |
| 51 def __init__(self, propertyfile, antpath='/usr/bin', bzippath=None): | 118 def __init__(self, propertyfile, antpath='/usr/bin', bzippath=None): |
| 52 """Initialize the ant path. | 119 """Initialize the ant path. |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 172 help='Output Directory.', | 239 help='Output Directory.', |
| 173 action='store') | 240 action='store') |
| 174 result.add_option('--dest', | 241 result.add_option('--dest', |
| 175 help='Output Directory.', | 242 help='Output Directory.', |
| 176 action='store') | 243 action='store') |
| 177 return result | 244 return result |
| 178 | 245 |
| 179 def main(): | 246 def main(): |
| 180 """Main entry point for the build program.""" | 247 """Main entry point for the build program.""" |
| 181 global BUILD_OS | 248 global BUILD_OS |
| 249 global CHANNEL | |
| 182 global DART_PATH | 250 global DART_PATH |
| 183 global TOOLS_PATH | |
| 184 global GSU_PATH_REV | |
| 185 global GSU_API_DOCS_PATH | 251 global GSU_API_DOCS_PATH |
| 186 global GSU_PATH_LATEST | 252 global GSU_PATH_LATEST |
| 253 global GSU_PATH_REV | |
| 254 global NO_UPLOAD | |
| 255 global PLUGINS_BUILD | |
| 187 global REVISION | 256 global REVISION |
| 257 global SYSTEM | |
| 258 global TOOLS_PATH | |
| 188 global TRUNK_BUILD | 259 global TRUNK_BUILD |
| 189 global PLUGINS_BUILD | |
| 190 global NO_UPLOAD | |
| 191 | 260 |
| 192 if not sys.argv: | 261 if not sys.argv: |
| 193 print 'Script pathname not known, giving up.' | 262 print 'Script pathname not known, giving up.' |
| 194 return 1 | 263 return 1 |
| 195 | 264 |
| 196 scriptdir = os.path.abspath(os.path.dirname(sys.argv[0])) | 265 scriptdir = os.path.abspath(os.path.dirname(sys.argv[0])) |
| 197 editorpath = os.path.abspath(os.path.join(scriptdir, '..')) | 266 editorpath = os.path.abspath(os.path.join(scriptdir, '..')) |
| 198 thirdpartypath = os.path.abspath(os.path.join(scriptdir, '..', '..', | 267 thirdpartypath = os.path.abspath(os.path.join(scriptdir, '..', '..', |
| 199 'third_party')) | 268 'third_party')) |
| 200 toolspath = os.path.abspath(os.path.join(scriptdir, '..', '..', | 269 toolspath = os.path.abspath(os.path.join(scriptdir, '..', '..', |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 291 # Get user name. If it does not start with chrome then deploy to the test | 360 # Get user name. If it does not start with chrome then deploy to the test |
| 292 # bucket; otherwise deploy to the continuous bucket. | 361 # bucket; otherwise deploy to the continuous bucket. |
| 293 username = os.environ.get('USER') | 362 username = os.environ.get('USER') |
| 294 if username is None: | 363 if username is None: |
| 295 username = os.environ.get('USERNAME') | 364 username = os.environ.get('USERNAME') |
| 296 | 365 |
| 297 if username is None: | 366 if username is None: |
| 298 print 'Could not find username' | 367 print 'Could not find username' |
| 299 return 6 | 368 return 6 |
| 300 | 369 |
| 301 # dart-editor[-trunk], dart-editor-(win/mac/linux)[-trunk] | 370 # dart-editor[-trunk], dart-editor-(win/mac/linux)[-trunk/be/dev/stable] |
| 302 builder_name = str(options.name) | 371 builder_name = str(options.name) |
| 303 | 372 |
| 304 TRUNK_BUILD = builder_name.endswith("-trunk") | 373 EDITOR_REGEXP = (r'^dart-editor(-(?P<system>(win|mac|linux)))?' + |
| 305 PLUGINS_BUILD = (builder_name == 'dart-editor' or | 374 '(-(?P<channel>(trunk|be|dev|stable)))?$') |
| 306 builder_name == 'dart-editor-trunk') | 375 match = re.match(EDITOR_REGEXP, builder_name) |
| 376 if not match: | |
| 377 raise Exception("Buildername '%s' does not match pattern '%s'." | |
| 378 % (builder_name, EDITOR_REGEXP)) | |
| 379 | |
| 380 CHANNEL = match.groupdict()['channel'] or 'be' | |
| 381 SYSTEM = match.groupdict()['system'] | |
| 382 | |
| 383 TRUNK_BUILD = CHANNEL == 'trunk' | |
| 384 PLUGINS_BUILD = SYSTEM is None | |
| 385 REVISION = revision | |
| 307 | 386 |
| 308 build_skip_tests = os.environ.get('DART_SKIP_RUNNING_TESTS') | 387 build_skip_tests = os.environ.get('DART_SKIP_RUNNING_TESTS') |
| 309 sdk_environment = os.environ | 388 sdk_environment = os.environ |
| 310 if username.startswith('chrome'): | 389 if username.startswith('chrome'): |
| 311 if TRUNK_BUILD: | 390 if TRUNK_BUILD: |
| 312 to_bucket = 'gs://dart-editor-archive-trunk' | 391 to_bucket = 'gs://dart-editor-archive-trunk' |
| 313 else: | 392 else: |
| 314 to_bucket = 'gs://dart-editor-archive-continuous' | 393 to_bucket = 'gs://dart-editor-archive-continuous' |
| 315 running_on_buildbot = True | 394 running_on_buildbot = True |
| 316 else: | 395 else: |
| 317 to_bucket = 'gs://dart-editor-archive-testing' | 396 to_bucket = 'gs://dart-editor-archive-testing' |
| 318 running_on_buildbot = False | 397 running_on_buildbot = False |
| 319 sdk_environment['DART_LOCAL_BUILD'] = 'dart-editor-archive-testing' | 398 sdk_environment['DART_LOCAL_BUILD'] = 'dart-editor-archive-testing' |
| 320 | 399 |
| 321 REVISION = revision | |
| 322 GSU_PATH_REV = '%s/%s' % (to_bucket, REVISION) | 400 GSU_PATH_REV = '%s/%s' % (to_bucket, REVISION) |
| 323 GSU_PATH_LATEST = '%s/%s' % (to_bucket, 'latest') | 401 GSU_PATH_LATEST = '%s/%s' % (to_bucket, 'latest') |
| 324 GSU_API_DOCS_PATH = '%s/%s' % (GSU_API_DOCS_BUCKET, REVISION) | 402 GSU_API_DOCS_PATH = '%s/%s' % (GSU_API_DOCS_BUCKET, REVISION) |
| 325 | 403 |
| 326 homegsutil = join(DART_PATH, 'third_party', 'gsutil', 'gsutil') | 404 homegsutil = join(DART_PATH, 'third_party', 'gsutil', 'gsutil') |
| 327 gsu = gsutil.GsUtil(False, homegsutil, | 405 gsu = gsutil.GsUtil(False, homegsutil, |
| 328 running_on_buildbot=running_on_buildbot) | 406 running_on_buildbot=running_on_buildbot) |
| 329 InstallDartium(buildroot, buildout, buildos, gsu) | 407 InstallDartium(buildroot, buildout, buildos, gsu) |
| 330 if sdk_environment.has_key('JAVA_HOME'): | 408 if sdk_environment.has_key('JAVA_HOME'): |
| 331 print 'JAVA_HOME = {0}'.format(str(sdk_environment['JAVA_HOME'])) | 409 print 'JAVA_HOME = {0}'.format(str(sdk_environment['JAVA_HOME'])) |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 400 | 478 |
| 401 # dart-editor-linux.gtk.x86.zip --> darteditor-linux-32.zip | 479 # dart-editor-linux.gtk.x86.zip --> darteditor-linux-32.zip |
| 402 RenameRcpZipFiles(buildout) | 480 RenameRcpZipFiles(buildout) |
| 403 | 481 |
| 404 PostProcessEditorBuilds(buildout) | 482 PostProcessEditorBuilds(buildout) |
| 405 | 483 |
| 406 if running_on_buildbot: | 484 if running_on_buildbot: |
| 407 version_file = _FindVersionFile(buildout) | 485 version_file = _FindVersionFile(buildout) |
| 408 if version_file: | 486 if version_file: |
| 409 UploadFile(version_file, False) | 487 UploadFile(version_file, False) |
| 488 if CHANNEL != 'trunk': | |
| 489 namer = bot_utils.GCSNamer(CHANNEL, bot_utils.ReleaseType.RAW) | |
|
ricow1
2013/09/16 11:51:30
Extract this to a method as well to be consistent
kustermann
2013/09/16 14:15:54
Extracted this and another one. Refactored bot_uti
| |
| 490 for revision in [REVISION, 'latest']: | |
| 491 DartArchiveFile(version_file, namer.version_file(revision), | |
| 492 create_md5sum=False) | |
| 410 | 493 |
| 411 found_zips = _FindRcpZipFiles(buildout) | 494 found_zips = _FindRcpZipFiles(buildout) |
| 412 for zipfile in found_zips: | 495 for zipfile in found_zips: |
| 413 UploadFile(zipfile) | 496 UploadFile(zipfile) |
| 497 DartArchiveUploadEditorZipFile(zipfile) | |
| 414 | 498 |
| 415 return 0 | 499 return 0 |
| 416 finally: | 500 finally: |
| 417 if ant_property_file is not None: | 501 if ant_property_file is not None: |
| 418 print 'cleaning up temp file {0}'.format(ant_property_file.name) | 502 print 'cleaning up temp file {0}'.format(ant_property_file.name) |
| 419 os.remove(ant_property_file.name) | 503 os.remove(ant_property_file.name) |
| 420 print 'cleaning up {0}'.format(buildroot) | 504 print 'cleaning up {0}'.format(buildroot) |
| 421 shutil.rmtree(buildroot, True) | 505 shutil.rmtree(buildroot, True) |
| 422 print 'Build Done' | 506 print 'Build Done' |
| 423 | 507 |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 606 unzip_dir = os.path.join(tmp_dir, | 690 unzip_dir = os.path.join(tmp_dir, |
| 607 os.path.splitext(os.path.basename(dartiumFile))[0]) | 691 os.path.splitext(os.path.basename(dartiumFile))[0]) |
| 608 if not os.path.exists(unzip_dir): | 692 if not os.path.exists(unzip_dir): |
| 609 os.makedirs(unzip_dir) | 693 os.makedirs(unzip_dir) |
| 610 # Always download as searchString.zip | 694 # Always download as searchString.zip |
| 611 basename = "%s.zip" % searchString | 695 basename = "%s.zip" % searchString |
| 612 tmp_zip_file = os.path.join(tmp_dir, basename) | 696 tmp_zip_file = os.path.join(tmp_dir, basename) |
| 613 | 697 |
| 614 if not os.path.exists(tmp_zip_file): | 698 if not os.path.exists(tmp_zip_file): |
| 615 gsu.Copy(dartiumFile, tmp_zip_file, False) | 699 gsu.Copy(dartiumFile, tmp_zip_file, False) |
| 616 | 700 |
| 617 # Upload dartium zip to make sure we have consistent dartium downloads | 701 # Upload dartium zip to make sure we have consistent dartium downloads |
| 618 UploadFile(tmp_zip_file) | 702 UploadFile(tmp_zip_file) |
| 619 | 703 |
| 620 # Dartium is unzipped into ~ unzip_dir/dartium-win-full-7665.7665 | 704 # Dartium is unzipped into ~ unzip_dir/dartium-win-full-7665.7665 |
| 621 dartium_zip = ziputils.ZipUtil(tmp_zip_file, buildos) | 705 dartium_zip = ziputils.ZipUtil(tmp_zip_file, buildos) |
| 622 dartium_zip.UnZip(unzip_dir) | 706 dartium_zip.UnZip(unzip_dir) |
| 623 else: | 707 else: |
| 624 dartium_zip = ziputils.ZipUtil(tmp_zip_file, buildos) | 708 dartium_zip = ziputils.ZipUtil(tmp_zip_file, buildos) |
| 625 | 709 |
| 626 dart_zip_path = join(buildout, rcpZipFile) | 710 dart_zip_path = join(buildout, rcpZipFile) |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 699 infofile = join('dart', 'DartEditor.app', 'Contents', 'Info.plist') | 783 infofile = join('dart', 'DartEditor.app', 'Contents', 'Info.plist') |
| 700 subprocess.call(['unzip', zipFile, infofile], env=os.environ) | 784 subprocess.call(['unzip', zipFile, infofile], env=os.environ) |
| 701 ReplaceInFiles( | 785 ReplaceInFiles( |
| 702 [infofile], | 786 [infofile], |
| 703 [('<dict>', | 787 [('<dict>', |
| 704 '<dict>\n\t<key>NSHighResolutionCapable</key>\n\t\t<true/>')]) | 788 '<dict>\n\t<key>NSHighResolutionCapable</key>\n\t\t<true/>')]) |
| 705 subprocess.call(['zip', '-q', zipFile, infofile], env=os.environ) | 789 subprocess.call(['zip', '-q', zipFile, infofile], env=os.environ) |
| 706 os.remove(infofile) | 790 os.remove(infofile) |
| 707 | 791 |
| 708 | 792 |
| 709 def CalculateChecksum(filename): | |
| 710 """Calculate the MD5 checksum for filename.""" | |
| 711 | |
| 712 md5 = hashlib.md5() | |
| 713 | |
| 714 with open(filename, 'rb') as f: | |
| 715 data = f.read(65536) | |
| 716 while len(data) > 0: | |
| 717 md5.update(data) | |
| 718 data = f.read(65536) | |
| 719 | |
| 720 return md5.hexdigest() | |
| 721 | |
| 722 | |
| 723 def CreateChecksumFile(filename): | |
| 724 """Create and upload an MD5 checksum file for filename.""" | |
| 725 | |
| 726 checksum = CalculateChecksum(filename) | |
| 727 checksum_filename = '%s.md5sum' % filename | |
| 728 | |
| 729 with open(checksum_filename, 'w') as f: | |
| 730 f.write('%s *%s' % (checksum, os.path.basename(filename))) | |
| 731 | |
| 732 return checksum_filename | |
| 733 | |
| 734 | |
| 735 def RunEditorTests(buildout, buildos): | 793 def RunEditorTests(buildout, buildos): |
| 736 StartBuildStep('run_tests') | 794 StartBuildStep('run_tests') |
| 737 | 795 |
| 738 for editorArchive in _GetTestableRcpArchives(buildout): | 796 for editorArchive in _GetTestableRcpArchives(buildout): |
| 739 with utils.TempDir('editor_') as tempDir: | 797 with utils.TempDir('editor_') as tempDir: |
| 740 print 'Running tests for %s...' % editorArchive | 798 print 'Running tests for %s...' % editorArchive |
| 741 | 799 |
| 742 zipper = ziputils.ZipUtil(join(buildout, editorArchive), buildos) | 800 zipper = ziputils.ZipUtil(join(buildout, editorArchive), buildos) |
| 743 zipper.UnZip(tempDir) | 801 zipper.UnZip(tempDir) |
| 744 | 802 |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 832 try: | 890 try: |
| 833 Gsutil(['rm', '-R', join(gsPath, '*')]) | 891 Gsutil(['rm', '-R', join(gsPath, '*')]) |
| 834 except: | 892 except: |
| 835 # Ignore this, in the general case there is nothing. | 893 # Ignore this, in the general case there is nothing. |
| 836 pass | 894 pass |
| 837 # create eclipse-update/index.html first to ensure eclipse-update prefix | 895 # create eclipse-update/index.html first to ensure eclipse-update prefix |
| 838 # exists (needed for recursive copy to follow) | 896 # exists (needed for recursive copy to follow) |
| 839 Gsutil(['cp', '-a', 'public-read', | 897 Gsutil(['cp', '-a', 'public-read', |
| 840 r'file://' + join(buildout, 'buildRepo', 'index.html'), | 898 r'file://' + join(buildout, 'buildRepo', 'index.html'), |
| 841 join(gsPath,'index.html')]) | 899 join(gsPath,'index.html')]) |
| 900 | |
| 842 # recursively copy update site contents | 901 # recursively copy update site contents |
| 843 UploadDirectory(glob.glob(join(buildout, 'buildRepo', '*')), gsPath) | 902 UploadDirectory(glob.glob(join(buildout, 'buildRepo', '*')), gsPath) |
| 844 | 903 DartArchiveUploadUpdateSite(join(buildout, 'buildRepo')) |
| 845 | 904 |
| 846 def CreateApiDocs(buildLocation): | 905 def CreateApiDocs(buildLocation): |
| 847 """Zip up api_docs, upload it, and upload the raw tree of docs""" | 906 """Zip up api_docs, upload it, and upload the raw tree of docs""" |
| 848 | 907 |
| 849 apidir = join(DART_PATH, | 908 apidir = join(DART_PATH, |
| 850 utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'), | 909 utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'), |
| 851 'api_docs') | 910 'api_docs') |
| 852 | 911 |
| 853 shutil.rmtree(apidir, ignore_errors = True) | 912 shutil.rmtree(apidir, ignore_errors = True) |
| 854 | 913 |
| 855 CallBuildScript('release', 'ia32', 'api_docs') | 914 CallBuildScript('release', 'ia32', 'api_docs') |
| 856 | 915 |
| 857 UploadApiDocs(apidir) | 916 UploadApiDocs(apidir) |
| 858 | 917 |
| 859 api_zip = join(buildLocation, 'dart-api-docs.zip') | 918 api_zip = join(buildLocation, 'dart-api-docs.zip') |
| 860 | 919 |
| 861 CreateZip(apidir, api_zip) | 920 CreateZip(apidir, api_zip) |
| 862 | 921 |
| 863 # upload to continuous/svn_rev and to continuous/latest | 922 # upload to continuous/svn_rev and to continuous/latest |
| 864 UploadFile(api_zip, False) | 923 UploadFile(api_zip, False) |
| 865 | 924 |
| 925 if CHANNEL != 'trunk': | |
| 926 namer = bot_utils.GCSNamer(CHANNEL, bot_utils.ReleaseType.RAW) | |
|
ricow1
2013/09/16 11:51:30
also put this into a method
kustermann
2013/09/16 14:15:54
Done.
| |
| 927 for revision in [REVISION, 'latest']: | |
| 928 destination = (namer.apidocs_directory(revision) + '/' + | |
| 929 namer.apidocs_zipfile()) | |
| 930 DartArchiveFile(api_zip, destination, create_md5sum=False) | |
| 931 | |
| 866 | 932 |
| 867 def CreateSDK(sdkpath): | 933 def CreateSDK(sdkpath): |
| 868 """Create the dart-sdk's for the current OS""" | 934 """Create the dart-sdk's for the current OS""" |
| 869 | 935 |
| 870 if BUILD_OS == 'linux': | 936 if BUILD_OS == 'linux': |
| 871 return CreateLinuxSDK(sdkpath) | 937 return CreateLinuxSDK(sdkpath) |
| 872 if BUILD_OS == 'macos': | 938 if BUILD_OS == 'macos': |
| 873 return CreateMacosSDK(sdkpath) | 939 return CreateMacosSDK(sdkpath) |
| 874 if BUILD_OS == 'win32': | 940 if BUILD_OS == 'win32': |
| 875 return CreateWin32SDK(sdkpath) | 941 return CreateWin32SDK(sdkpath) |
| 876 | 942 |
| 877 | |
| 878 def CreateLinuxSDK(sdkpath): | 943 def CreateLinuxSDK(sdkpath): |
| 879 sdkdir32 = join(DART_PATH, utils.GetBuildRoot('linux', 'release', 'ia32'), | 944 sdkdir32 = join(DART_PATH, utils.GetBuildRoot('linux', 'release', 'ia32'), |
| 880 'dart-sdk') | 945 'dart-sdk') |
| 881 sdkdir64 = join(DART_PATH, utils.GetBuildRoot('linux', 'release', 'x64'), | 946 sdkdir64 = join(DART_PATH, utils.GetBuildRoot('linux', 'release', 'x64'), |
| 882 'dart-sdk') | 947 'dart-sdk') |
| 883 | 948 |
| 884 # Build the SDK | 949 # Build the SDK |
| 885 CallBuildScript('release', 'ia32,x64', 'create_sdk') | 950 CallBuildScript('release', 'ia32,x64', 'create_sdk') |
| 886 | 951 |
| 887 sdk32_zip = join(sdkpath, 'dartsdk-linux-32.zip') | 952 sdk32_zip = join(sdkpath, 'dartsdk-linux-32.zip') |
| 888 sdk32_tgz = join(sdkpath, 'dartsdk-linux-32.tar.gz') | 953 sdk32_tgz = join(sdkpath, 'dartsdk-linux-32.tar.gz') |
| 889 sdk64_zip = join(sdkpath, 'dartsdk-linux-64.zip') | 954 sdk64_zip = join(sdkpath, 'dartsdk-linux-64.zip') |
| 890 sdk64_tgz = join(sdkpath, 'dartsdk-linux-64.tar.gz') | 955 sdk64_tgz = join(sdkpath, 'dartsdk-linux-64.tar.gz') |
| 891 | 956 |
| 892 CreateZip(sdkdir32, sdk32_zip) | 957 CreateZip(sdkdir32, sdk32_zip) |
| 893 CreateTgz(sdkdir32, sdk32_tgz) | 958 CreateTgz(sdkdir32, sdk32_tgz) |
| 894 CreateZip(sdkdir64, sdk64_zip) | 959 CreateZip(sdkdir64, sdk64_zip) |
| 895 CreateTgz(sdkdir64, sdk64_tgz) | 960 CreateTgz(sdkdir64, sdk64_tgz) |
| 896 | 961 |
| 897 UploadFile(sdk32_zip) | 962 UploadFile(sdk32_zip) |
| 898 UploadFile(sdk32_tgz) | 963 UploadFile(sdk32_tgz) |
| 899 UploadFile(sdk64_zip) | 964 UploadFile(sdk64_zip) |
| 900 UploadFile(sdk64_tgz) | 965 UploadFile(sdk64_tgz) |
| 901 | 966 |
| 967 DartArchiveUploadSDKs('linux', sdk32_zip, sdk64_zip) | |
| 968 | |
| 902 return sdk32_zip | 969 return sdk32_zip |
| 903 | 970 |
| 904 | 971 |
| 905 def CreateMacosSDK(sdkpath): | 972 def CreateMacosSDK(sdkpath): |
| 906 # Build the SDK | 973 # Build the SDK |
| 907 CallBuildScript('release', 'ia32,x64', 'create_sdk') | 974 CallBuildScript('release', 'ia32,x64', 'create_sdk') |
| 908 | 975 |
| 909 sdk32_zip = join(sdkpath, 'dartsdk-macos-32.zip') | 976 sdk32_zip = join(sdkpath, 'dartsdk-macos-32.zip') |
| 910 sdk64_zip = join(sdkpath, 'dartsdk-macos-64.zip') | 977 sdk64_zip = join(sdkpath, 'dartsdk-macos-64.zip') |
| 911 sdk32_tgz = join(sdkpath, 'dartsdk-macos-32.tar.gz') | 978 sdk32_tgz = join(sdkpath, 'dartsdk-macos-32.tar.gz') |
| 912 sdk64_tgz = join(sdkpath, 'dartsdk-macos-64.tar.gz') | 979 sdk64_tgz = join(sdkpath, 'dartsdk-macos-64.tar.gz') |
| 913 | 980 |
| 914 CreateZip(join(DART_PATH, utils.GetBuildRoot('macos', 'release', 'ia32'), | 981 CreateZip(join(DART_PATH, utils.GetBuildRoot('macos', 'release', 'ia32'), |
| 915 'dart-sdk'), sdk32_zip) | 982 'dart-sdk'), sdk32_zip) |
| 916 CreateZip(join(DART_PATH, utils.GetBuildRoot('macos', 'release', 'x64'), | 983 CreateZip(join(DART_PATH, utils.GetBuildRoot('macos', 'release', 'x64'), |
| 917 'dart-sdk'), sdk64_zip) | 984 'dart-sdk'), sdk64_zip) |
| 918 CreateTgz(join(DART_PATH, utils.GetBuildRoot('macos', 'release', 'ia32'), | 985 CreateTgz(join(DART_PATH, utils.GetBuildRoot('macos', 'release', 'ia32'), |
| 919 'dart-sdk'), sdk32_tgz) | 986 'dart-sdk'), sdk32_tgz) |
| 920 CreateTgz(join(DART_PATH, utils.GetBuildRoot('macos', 'release', 'x64'), | 987 CreateTgz(join(DART_PATH, utils.GetBuildRoot('macos', 'release', 'x64'), |
| 921 'dart-sdk'), sdk64_tgz) | 988 'dart-sdk'), sdk64_tgz) |
| 922 | 989 |
| 923 UploadFile(sdk32_zip) | 990 UploadFile(sdk32_zip) |
| 924 UploadFile(sdk64_zip) | 991 UploadFile(sdk64_zip) |
| 925 UploadFile(sdk32_tgz) | 992 UploadFile(sdk32_tgz) |
| 926 UploadFile(sdk64_tgz) | 993 UploadFile(sdk64_tgz) |
| 927 | 994 |
| 995 DartArchiveUploadSDKs('macos', sdk32_zip, sdk64_zip) | |
| 996 | |
| 928 return sdk32_zip | 997 return sdk32_zip |
| 929 | 998 |
| 930 | 999 |
| 931 def CreateWin32SDK(sdkpath): | 1000 def CreateWin32SDK(sdkpath): |
| 932 # Build the SDK | 1001 # Build the SDK |
| 933 CallBuildScript('release', 'ia32,x64', 'create_sdk') | 1002 CallBuildScript('release', 'ia32,x64', 'create_sdk') |
| 934 | 1003 |
| 935 sdk32_zip = join(sdkpath, 'dartsdk-win32-32.zip') | 1004 sdk32_zip = join(sdkpath, 'dartsdk-win32-32.zip') |
| 936 sdk64_zip = join(sdkpath, 'dartsdk-win32-64.zip') | 1005 sdk64_zip = join(sdkpath, 'dartsdk-win32-64.zip') |
| 937 | 1006 |
| 938 CreateZipWindows(join(DART_PATH, | 1007 CreateZipWindows(join(DART_PATH, |
| 939 utils.GetBuildRoot('win32', 'release', 'ia32'), | 1008 utils.GetBuildRoot('win32', 'release', 'ia32'), |
| 940 'dart-sdk'), sdk32_zip) | 1009 'dart-sdk'), sdk32_zip) |
| 941 CreateZipWindows(join(DART_PATH, | 1010 CreateZipWindows(join(DART_PATH, |
| 942 utils.GetBuildRoot('win32', 'release', 'x64'), | 1011 utils.GetBuildRoot('win32', 'release', 'x64'), |
| 943 'dart-sdk'), sdk64_zip) | 1012 'dart-sdk'), sdk64_zip) |
| 944 | 1013 |
| 945 UploadFile(sdk32_zip) | 1014 UploadFile(sdk32_zip) |
| 946 UploadFile(sdk64_zip) | 1015 UploadFile(sdk64_zip) |
| 947 | 1016 |
| 1017 DartArchiveUploadSDKs('win32', sdk32_zip, sdk64_zip) | |
| 1018 | |
| 948 return sdk32_zip | 1019 return sdk32_zip |
| 949 | 1020 |
| 950 | 1021 |
| 951 def CallBuildScript(mode, arch, target): | 1022 def CallBuildScript(mode, arch, target): |
| 952 """invoke tools/build.py""" | 1023 """invoke tools/build.py""" |
| 953 buildScript = join(TOOLS_PATH, 'build.py') | 1024 buildScript = join(TOOLS_PATH, 'build.py') |
| 954 cmd = [sys.executable, buildScript, '--mode=%s' % mode, '--arch=%s' % arch, | 1025 cmd = [sys.executable, buildScript, '--mode=%s' % mode, '--arch=%s' % arch, |
| 955 target] | 1026 target] |
| 956 try: | 1027 try: |
| 957 ExecuteCommand(cmd, DART_PATH) | 1028 ExecuteCommand(cmd, DART_PATH) |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 985 FileDelete(targetFile) | 1056 FileDelete(targetFile) |
| 986 ExecuteCommand(['tar', 'czf', targetFile, os.path.basename(directory)], | 1057 ExecuteCommand(['tar', 'czf', targetFile, os.path.basename(directory)], |
| 987 os.path.dirname(directory)) | 1058 os.path.dirname(directory)) |
| 988 | 1059 |
| 989 | 1060 |
| 990 def UploadFile(targetFile, createChecksum=True): | 1061 def UploadFile(targetFile, createChecksum=True): |
| 991 """Upload the given file to google storage.""" | 1062 """Upload the given file to google storage.""" |
| 992 | 1063 |
| 993 if (NO_UPLOAD): | 1064 if (NO_UPLOAD): |
| 994 return | 1065 return |
| 995 | 1066 |
| 996 filePathRev = "%s/%s" % (GSU_PATH_REV, os.path.basename(targetFile)) | 1067 filePathRev = "%s/%s" % (GSU_PATH_REV, os.path.basename(targetFile)) |
| 997 filePathLatest = "%s/%s" % (GSU_PATH_LATEST, os.path.basename(targetFile)) | 1068 filePathLatest = "%s/%s" % (GSU_PATH_LATEST, os.path.basename(targetFile)) |
| 998 | 1069 |
| 999 if (createChecksum): | 1070 if createChecksum: |
| 1000 checksum = CreateChecksumFile(targetFile) | 1071 checksum = bot_utils.CreateChecksumFile(targetFile) |
| 1001 | 1072 |
| 1002 checksumRev = "%s/%s" % (GSU_PATH_REV, os.path.basename(checksum)) | 1073 checksumRev = "%s/%s" % (GSU_PATH_REV, os.path.basename(checksum)) |
| 1003 checksumLatest = "%s/%s" % (GSU_PATH_LATEST, os.path.basename(checksum)) | 1074 checksumLatest = "%s/%s" % (GSU_PATH_LATEST, os.path.basename(checksum)) |
| 1004 | 1075 |
| 1005 Gsutil(['cp', '-a', 'public-read', r'file://' + targetFile, filePathRev]) | 1076 Gsutil(['cp', '-a', 'public-read', r'file://' + targetFile, filePathRev]) |
| 1006 | 1077 |
| 1007 if (createChecksum): | 1078 if (createChecksum): |
| 1008 Gsutil(['cp', '-a', 'public-read', r'file://' + checksum, checksumRev]) | 1079 Gsutil(['cp', '-a', 'public-read', r'file://' + checksum, checksumRev]) |
| 1009 | 1080 |
| 1010 Gsutil(['cp', '-a', 'public-read', filePathRev, filePathLatest]) | 1081 Gsutil(['cp', '-a', 'public-read', filePathRev, filePathLatest]) |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1066 """delete the given file - do not re-throw any exceptions that occur""" | 1137 """delete the given file - do not re-throw any exceptions that occur""" |
| 1067 if os.path.exists(f): | 1138 if os.path.exists(f): |
| 1068 try: | 1139 try: |
| 1069 os.remove(f) | 1140 os.remove(f) |
| 1070 except OSError: | 1141 except OSError: |
| 1071 print 'error deleting %s' % f | 1142 print 'error deleting %s' % f |
| 1072 | 1143 |
| 1073 | 1144 |
| 1074 if __name__ == '__main__': | 1145 if __name__ == '__main__': |
| 1075 sys.exit(main()) | 1146 sys.exit(main()) |
| OLD | NEW |