OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 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 """Script that reads omahaproxy and gsutil to determine version of SDK to put | 6 """Script that reads omahaproxy and gsutil to determine version of SDK to put |
7 in manifest. | 7 in manifest. |
8 """ | 8 """ |
9 | 9 |
| 10 # pylint is convinced the email module is missing attributes |
| 11 # pylint: disable=E1101 |
| 12 |
10 import buildbot_common | 13 import buildbot_common |
11 import csv | 14 import csv |
12 import cStringIO | 15 import cStringIO |
13 import email | 16 import email |
14 import manifest_util | 17 import manifest_util |
15 import optparse | 18 import optparse |
16 import os | 19 import os |
17 import posixpath | 20 import posixpath |
18 import re | 21 import re |
19 import smtplib | 22 import smtplib |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 platforms = [] | 88 platforms = [] |
86 for url in archive_urls: | 89 for url in archive_urls: |
87 platform = GetPlatformFromArchiveUrl(url) | 90 platform = GetPlatformFromArchiveUrl(url) |
88 if platform: | 91 if platform: |
89 platforms.append(platform) | 92 platforms.append(platform) |
90 return platforms | 93 return platforms |
91 | 94 |
92 | 95 |
93 class Delegate(object): | 96 class Delegate(object): |
94 """Delegate all external access; reading/writing to filesystem, gsutil etc.""" | 97 """Delegate all external access; reading/writing to filesystem, gsutil etc.""" |
| 98 |
95 def GetRepoManifest(self): | 99 def GetRepoManifest(self): |
96 """Read the manifest file from the NaCl SDK repository. | 100 """Read the manifest file from the NaCl SDK repository. |
97 | 101 |
98 This manifest is used as a template for the auto updater; only pepper | 102 This manifest is used as a template for the auto updater; only pepper |
99 bundles with no archives are considered for auto updating. | 103 bundles with no archives are considered for auto updating. |
100 | 104 |
101 Returns: | 105 Returns: |
102 A manifest_util.SDKManifest object read from the NaCl SDK repo.""" | 106 A manifest_util.SDKManifest object read from the NaCl SDK repo.""" |
103 raise NotImplementedError() | 107 raise NotImplementedError() |
104 | 108 |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 def GsUtil_cp(self, src, dest, stdin=None): | 154 def GsUtil_cp(self, src, dest, stdin=None): |
151 """Runs gsutil cp |src| |dest| | 155 """Runs gsutil cp |src| |dest| |
152 | 156 |
153 Args: | 157 Args: |
154 src: The file path or url to copy from. | 158 src: The file path or url to copy from. |
155 dest: The file path or url to copy to. | 159 dest: The file path or url to copy to. |
156 stdin: If src is '-', this is used as the stdin to give to gsutil. The | 160 stdin: If src is '-', this is used as the stdin to give to gsutil. The |
157 effect is that text in stdin is copied to |dest|.""" | 161 effect is that text in stdin is copied to |dest|.""" |
158 raise NotImplementedError() | 162 raise NotImplementedError() |
159 | 163 |
160 | |
161 def Print(self, *args): | 164 def Print(self, *args): |
162 """Print a message.""" | 165 """Print a message.""" |
163 raise NotImplementedError() | 166 raise NotImplementedError() |
164 | 167 |
165 | 168 |
166 class RealDelegate(Delegate): | 169 class RealDelegate(Delegate): |
167 def __init__(self, dryrun=False, gsutil=None): | 170 def __init__(self, dryrun=False, gsutil=None): |
| 171 super(RealDelegate, self).__init__() |
168 self.dryrun = dryrun | 172 self.dryrun = dryrun |
169 if gsutil: | 173 if gsutil: |
170 self.gsutil = gsutil | 174 self.gsutil = gsutil |
171 else: | 175 else: |
172 self.gsutil = buildbot_common.GetGsutil() | 176 self.gsutil = buildbot_common.GetGsutil() |
173 | 177 |
174 def GetRepoManifest(self): | 178 def GetRepoManifest(self): |
175 """See Delegate.GetRepoManifest""" | 179 """See Delegate.GetRepoManifest""" |
176 with open(REPO_MANIFEST, 'r') as sdk_stream: | 180 with open(REPO_MANIFEST, 'r') as sdk_stream: |
177 sdk_json_string = sdk_stream.read() | 181 sdk_json_string = sdk_stream.read() |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
306 shared_version_generator: A generator that will yield (version, channel) | 310 shared_version_generator: A generator that will yield (version, channel) |
307 tuples in order of most recent to least recent. | 311 tuples in order of most recent to least recent. |
308 allow_trunk_revisions: If True, will search for archives using the | 312 allow_trunk_revisions: If True, will search for archives using the |
309 trunk revision that matches the branch version. | 313 trunk revision that matches the branch version. |
310 Returns: | 314 Returns: |
311 A tuple (version, channel, archives). The version is a string such as | 315 A tuple (version, channel, archives). The version is a string such as |
312 "19.0.1084.41". The channel is one of ('stable', 'beta', 'dev', | 316 "19.0.1084.41". The channel is one of ('stable', 'beta', 'dev', |
313 'canary'). |archives| is a list of archive URLs.""" | 317 'canary'). |archives| is a list of archive URLs.""" |
314 version = None | 318 version = None |
315 skipped_versions = [] | 319 skipped_versions = [] |
| 320 channel = '' |
316 while True: | 321 while True: |
317 try: | 322 try: |
318 version, channel = shared_version_generator.next() | 323 version, channel = shared_version_generator.next() |
319 except StopIteration: | 324 except StopIteration: |
320 msg = 'No shared version for platforms: %s\n' % (', '.join(platforms)) | 325 msg = 'No shared version for platforms: %s\n' % (', '.join(platforms)) |
321 msg += 'Last version checked = %s.\n' % (version,) | 326 msg += 'Last version checked = %s.\n' % (version,) |
322 if skipped_versions: | 327 if skipped_versions: |
323 msg += 'Versions skipped due to missing archives:\n' | 328 msg += 'Versions skipped due to missing archives:\n' |
324 for version, channel, archives in skipped_versions: | 329 for version, channel, archives in skipped_versions: |
325 if archives: | 330 if archives: |
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
622 subject = '[%s] Failed to update manifest' % (scriptname,) | 627 subject = '[%s] Failed to update manifest' % (scriptname,) |
623 text = '%s failed.\n\nSTDERR:\n%s\n' % (scriptname, sys.stderr.getvalue()) | 628 text = '%s failed.\n\nSTDERR:\n%s\n' % (scriptname, sys.stderr.getvalue()) |
624 SendMail(options.mailfrom, options.mailto, subject, text) | 629 SendMail(options.mailfrom, options.mailto, subject, text) |
625 sys.exit(1) | 630 sys.exit(1) |
626 else: | 631 else: |
627 raise | 632 raise |
628 | 633 |
629 | 634 |
630 if __name__ == '__main__': | 635 if __name__ == '__main__': |
631 sys.exit(main(sys.argv)) | 636 sys.exit(main(sys.argv)) |
OLD | NEW |