| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # | 2 # |
| 3 # Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 3 # Copyright (c) 2015, 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 os.path | 7 import os.path |
| 8 import shutil | 8 import shutil |
| 9 import sys | 9 import sys |
| 10 import subprocess |
| 10 | 11 |
| 11 import bot | 12 import bot |
| 12 import bot_utils | 13 import bot_utils |
| 13 | 14 |
| 14 utils = bot_utils.GetUtils() | 15 utils = bot_utils.GetUtils() |
| 15 | 16 |
| 16 BUILD_OS = utils.GuessOS() | 17 BUILD_OS = utils.GuessOS() |
| 17 | 18 |
| 18 (bot_name, _) = bot.GetBotName() | 19 (bot_name, _) = bot.GetBotName() |
| 19 CHANNEL = bot_utils.GetChannelFromName(bot_name) | 20 CHANNEL = bot_utils.GetChannelFromName(bot_name) |
| 20 | 21 |
| 21 def BuildSDK(): | 22 def BuildSDK(): |
| 22 with bot.BuildStep('Build SDK'): | 23 with bot.BuildStep('Build SDK'): |
| 23 Run([sys.executable, './tools/build.py', '--mode=release', | 24 Run([sys.executable, './tools/build.py', '--mode=release', |
| 24 '--arch=ia32,x64', 'create_sdk']) | 25 '--arch=ia32,x64', 'create_sdk']) |
| 25 | 26 |
| 26 def BuildAPIDocs(): | 27 def BuildAPIDocs(): |
| 27 with bot.BuildStep('Build API docs'): | 28 with bot.BuildStep('Build API docs'): |
| 28 Run([sys.executable, './tools/build.py', '--mode=release', | 29 Run([sys.executable, './tools/build.py', '--mode=release', |
| 29 '--arch=ia32', 'api_docs']) | 30 '--arch=ia32', 'api_docs']) |
| 30 Run([sys.executable, './tools/build.py', '--mode=release', | 31 Run([sys.executable, './tools/build.py', '--mode=release', |
| 31 '--arch=ia32', 'dartdocgen']) | 32 '--arch=ia32', 'dartdocgen']) |
| 32 | 33 |
| 34 def BuildDartdocAPIDocs(dirname): |
| 35 dart_sdk = os.path.join(bot_utils.DART_DIR, |
| 36 utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'), |
| 37 'dart-sdk') |
| 38 dart_exe = os.path.join(dart_sdk, 'bin', 'dart') |
| 39 dartdoc_dart = os.path.join(bot_utils.DART_DIR, |
| 40 'third_party', 'pkg' , 'dartdoc' , 'bin' , |
| 41 'dartdoc.dart') |
| 42 packages_dir = os.path.join(bot_utils.DART_DIR, |
| 43 utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'), |
| 44 'packages') |
| 45 with bot.BuildStep('Build API docs by dartdoc'): |
| 46 subprocess.call([dart_exe, '--package-root=' + packages_dir, dartdoc_dart, |
| 47 '--sdk-docs','--output', dirname, '--dart-sdk', dart_sdk, |
| 48 '--package-root=%s' % packages_dir], |
| 49 stdout=open(os.devnull, 'wb')) |
| 50 |
| 33 def CreateUploadVersionFile(): | 51 def CreateUploadVersionFile(): |
| 34 file_path = os.path.join(bot_utils.DART_DIR, | 52 file_path = os.path.join(bot_utils.DART_DIR, |
| 35 utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'), | 53 utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'), |
| 36 'VERSION') | 54 'VERSION') |
| 37 with open(file_path, 'w') as fd: | 55 with open(file_path, 'w') as fd: |
| 38 fd.write(utils.GetVersionFileContent()) | 56 fd.write(utils.GetVersionFileContent()) |
| 39 DartArchiveUploadVersionFile(file_path) | 57 DartArchiveUploadVersionFile(file_path) |
| 40 | 58 |
| 41 def DartArchiveUploadVersionFile(version_file): | 59 def DartArchiveUploadVersionFile(version_file): |
| 42 namer = bot_utils.GCSNamer(CHANNEL, bot_utils.ReleaseType.RAW) | 60 namer = bot_utils.GCSNamer(CHANNEL, bot_utils.ReleaseType.RAW) |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 BuildSDK() | 97 BuildSDK() |
| 80 CreateUploadSDKZips() | 98 CreateUploadSDKZips() |
| 81 | 99 |
| 82 def CreateUploadAPIDocs(): | 100 def CreateUploadAPIDocs(): |
| 83 api_path = os.path.join(bot_utils.DART_DIR, | 101 api_path = os.path.join(bot_utils.DART_DIR, |
| 84 utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'), | 102 utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'), |
| 85 'api_docs') | 103 'api_docs') |
| 86 api_zip = os.path.join(bot_utils.DART_DIR, | 104 api_zip = os.path.join(bot_utils.DART_DIR, |
| 87 utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'), | 105 utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'), |
| 88 'dart-api-docs.zip') | 106 'dart-api-docs.zip') |
| 107 dartdoc_dir = os.path.join(bot_utils.DART_DIR, |
| 108 utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'), |
| 109 'gen-dartdocs') |
| 110 dartdoc_zip = os.path.join(bot_utils.DART_DIR, |
| 111 utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'), |
| 112 'dartdocs-api.zip') |
| 89 shutil.rmtree(api_path, ignore_errors=True) | 113 shutil.rmtree(api_path, ignore_errors=True) |
| 90 FileDelete(api_zip) | 114 FileDelete(api_zip) |
| 91 BuildAPIDocs() | 115 BuildAPIDocs() |
| 92 UploadApiDocs(api_path) | 116 UploadApiDocs(api_path) |
| 117 UploadApiLatestFile() |
| 93 CreateZip(api_path, api_zip) | 118 CreateZip(api_path, api_zip) |
| 94 DartArchiveUploadAPIDocs(api_zip) | 119 DartArchiveUploadAPIDocs(api_zip) |
| 120 BuildDartdocAPIDocs(dartdoc_dir) |
| 121 UploadDartdocApiDocs(dartdoc_dir) |
| 122 CreateZip(dartdoc_dir, dartdoc_zip) |
| 123 DartArchiveUploadDartdocAPIDocs(dartdoc_zip) |
| 95 | 124 |
| 96 def DartArchiveUploadAPIDocs(api_zip): | 125 def DartArchiveUploadAPIDocs(api_zip): |
| 97 namer = bot_utils.GCSNamer(CHANNEL, bot_utils.ReleaseType.RAW) | 126 namer = bot_utils.GCSNamer(CHANNEL, bot_utils.ReleaseType.RAW) |
| 98 revision = utils.GetArchiveVersion() | 127 revision = utils.GetArchiveVersion() |
| 99 for revision in [revision, 'latest']: | 128 for revision in [revision, 'latest']: |
| 100 destination = (namer.apidocs_directory(revision) + '/' + | 129 destination = (namer.apidocs_directory(revision) + '/' + |
| 101 namer.apidocs_zipfilename()) | 130 namer.apidocs_zipfilename()) |
| 102 DartArchiveFile(api_zip, destination, checksum_files=False) | 131 DartArchiveFile(api_zip, destination, checksum_files=False) |
| 103 | 132 |
| 104 def UploadApiDocs(dir_name): | 133 def UploadApiDocs(dir_name): |
| 105 apidocs_namer = bot_utils.GCSNamerApiDocs(CHANNEL) | 134 apidocs_namer = bot_utils.GCSNamerApiDocs(CHANNEL) |
| 106 revision = utils.GetArchiveVersion() | 135 revision = utils.GetArchiveVersion() |
| 107 apidocs_destination_gcsdir = apidocs_namer.docs_dirpath(revision) | 136 apidocs_destination_gcsdir = apidocs_namer.docs_dirpath(revision) |
| 108 apidocs_destination_latestfile = apidocs_namer.docs_latestpath(revision) | 137 apidocs_destination_latestfile = apidocs_namer.docs_latestpath(revision) |
| 109 | 138 |
| 110 # Return early if the documents have already been uploaded. | 139 # Return early if the documents have already been uploaded. |
| 111 # (This can happen if a build was forced, or a commit had no changes in the | 140 # (This can happen if a build was forced, or a commit had no changes in the |
| 112 # dart repository (e.g. DEPS file update).) | 141 # dart repository (e.g. DEPS file update).) |
| 113 if GsutilExists(apidocs_destination_gcsdir): | 142 if GsutilExists(apidocs_destination_gcsdir): |
| 114 print ("Not uploading api docs, since %s is already present." | 143 print ("Not uploading api docs, since %s is already present." |
| 115 % apidocs_destination_gcsdir) | 144 % apidocs_destination_gcsdir) |
| 116 return | 145 return |
| 117 | 146 |
| 118 # Upload everything inside the built apidocs directory. | 147 # Upload everything inside the built apidocs directory. |
| 119 gsutil = bot_utils.GSUtil() | 148 gsutil = bot_utils.GSUtil() |
| 120 gsutil.upload(dir_name, apidocs_destination_gcsdir, recursive=True, | 149 gsutil.upload(dir_name, apidocs_destination_gcsdir, recursive=True, |
| 121 public=True) | 150 public=True) |
| 122 | 151 |
| 152 def DartArchiveUploadDartdocAPIDocs(api_zip): |
| 153 namer = bot_utils.GCSNamer(CHANNEL, bot_utils.ReleaseType.RAW) |
| 154 revision = utils.GetArchiveVersion() |
| 155 for revision in [revision, 'latest']: |
| 156 destination = (namer.apidocs_directory(revision) + '/' + |
| 157 namer.dartdocs_zipfilename()) |
| 158 DartArchiveFile(api_zip, destination, checksum_files=False) |
| 159 |
| 160 def UploadDartdocApiDocs(dir_name): |
| 161 apidocs_namer = bot_utils.GCSNamerApiDocs(CHANNEL) |
| 162 revision = utils.GetArchiveVersion() |
| 163 dartdocs_destination_gcsdir = apidocs_namer.dartdocs_dirpath(revision) |
| 164 |
| 165 # Return early if the documents have already been uploaded. |
| 166 # This can happen if a build was forced, or a commit had no changes in the |
| 167 # dart repository (e.g. DEPS file update). |
| 168 if GsutilExists(dartdocs_destination_gcsdir): |
| 169 print ("Not uploading api docs, since %s is already present." |
| 170 % dartdocs_destination_gcsdir) |
| 171 return |
| 172 |
| 173 # Upload everything inside the built apidocs directory. |
| 174 gsutil = bot_utils.GSUtil() |
| 175 gsutil.upload(dir_name, dartdocs_destination_gcsdir, recursive=True, |
| 176 public=True, multithread=True) |
| 177 |
| 178 def UploadApiLatestFile(): |
| 179 apidocs_namer = bot_utils.GCSNamerApiDocs(CHANNEL) |
| 180 revision = utils.GetArchiveVersion() |
| 181 apidocs_destination_latestfile = apidocs_namer.docs_latestpath(revision) |
| 123 # Update latest.txt to contain the newest revision. | 182 # Update latest.txt to contain the newest revision. |
| 124 with utils.TempDir('latest_file') as temp_dir: | 183 with utils.TempDir('latest_file') as temp_dir: |
| 125 latest_file = os.path.join(temp_dir, 'latest.txt') | 184 latest_file = os.path.join(temp_dir, 'latest.txt') |
| 126 with open(latest_file, 'w') as f: | 185 with open(latest_file, 'w') as f: |
| 127 f.write('%s' % revision) | 186 f.write('%s' % revision) |
| 128 DartArchiveFile(latest_file, apidocs_destination_latestfile) | 187 DartArchiveFile(latest_file, apidocs_destination_latestfile) |
| 129 | 188 |
| 130 def GsutilExists(gsu_path): | 189 def GsutilExists(gsu_path): |
| 131 # This is a little hackish, but it is basically a one off doing very | 190 # This is a little hackish, but it is basically a one off doing very |
| 132 # specialized check that we don't use elsewhere. | 191 # specialized check that we don't use elsewhere. |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 | 247 |
| 189 if __name__ == '__main__': | 248 if __name__ == '__main__': |
| 190 # We always clobber the bot, to make sure releases are build from scratch | 249 # We always clobber the bot, to make sure releases are build from scratch |
| 191 force = CHANNEL != bot_utils.Channel.BLEEDING_EDGE | 250 force = CHANNEL != bot_utils.Channel.BLEEDING_EDGE |
| 192 bot.Clobber(force=force) | 251 bot.Clobber(force=force) |
| 193 | 252 |
| 194 CreateUploadSDK() | 253 CreateUploadSDK() |
| 195 if BUILD_OS == 'linux': | 254 if BUILD_OS == 'linux': |
| 196 CreateUploadVersionFile() | 255 CreateUploadVersionFile() |
| 197 CreateUploadAPIDocs() | 256 CreateUploadAPIDocs() |
| OLD | NEW |