| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2014 the V8 project authors. All rights reserved. | 2 # Copyright 2014 the V8 project 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 # This script retrieves the history of all V8 branches and | 6 # This script retrieves the history of all V8 branches and |
| 7 # their corresponding Chromium revisions. | 7 # their corresponding Chromium revisions. |
| 8 | 8 |
| 9 # Requires a chromium checkout with branch heads: | 9 # Requires a chromium checkout with branch heads: |
| 10 # gclient sync --with_branch_heads | 10 # gclient sync --with_branch_heads |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 53 DEPS_RE = re.compile(r"""^\s*(?:["']v8_revision["']: ["']""" | 53 DEPS_RE = re.compile(r"""^\s*(?:["']v8_revision["']: ["']""" |
| 54 """|\(Var\("googlecode_url"\) % "v8"\) \+ "\/trunk@""" | 54 """|\(Var\("googlecode_url"\) % "v8"\) \+ "\/trunk@""" |
| 55 """|"http\:\/\/v8\.googlecode\.com\/svn\/trunk@)""" | 55 """|"http\:\/\/v8\.googlecode\.com\/svn\/trunk@)""" |
| 56 """([^"']+)["'].*$""", re.M) | 56 """([^"']+)["'].*$""", re.M) |
| 57 | 57 |
| 58 # Expression to pick tag and revision for bleeding edge tags. To be used with | 58 # Expression to pick tag and revision for bleeding edge tags. To be used with |
| 59 # output of 'svn log'. | 59 # output of 'svn log'. |
| 60 BLEEDING_EDGE_TAGS_RE = re.compile( | 60 BLEEDING_EDGE_TAGS_RE = re.compile( |
| 61 r"A \/tags\/([^\s]+) \(from \/branches\/bleeding_edge\:(\d+)\)") | 61 r"A \/tags\/([^\s]+) \(from \/branches\/bleeding_edge\:(\d+)\)") |
| 62 | 62 |
| 63 OMAHA_PROXY_URL = "http://omahaproxy.appspot.com/" |
| 63 | 64 |
| 64 def SortBranches(branches): | 65 def SortBranches(branches): |
| 65 """Sort branches with version number names.""" | 66 """Sort branches with version number names.""" |
| 66 return sorted(branches, key=SortingKey, reverse=True) | 67 return sorted(branches, key=SortingKey, reverse=True) |
| 67 | 68 |
| 68 | 69 |
| 69 def FilterDuplicatesAndReverse(cr_releases): | 70 def FilterDuplicatesAndReverse(cr_releases): |
| 70 """Returns the chromium releases in reverse order filtered by v8 revision | 71 """Returns the chromium releases in reverse order filtered by v8 revision |
| 71 duplicates. | 72 duplicates. |
| 72 | 73 |
| (...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 433 releases_dict.get(revision, {})["chromium_branch"] = ranges | 434 releases_dict.get(revision, {})["chromium_branch"] = ranges |
| 434 | 435 |
| 435 | 436 |
| 436 class RetrieveInformationOnChromeReleases(Step): | 437 class RetrieveInformationOnChromeReleases(Step): |
| 437 MESSAGE = 'Retrieves relevant information on the latest Chrome releases' | 438 MESSAGE = 'Retrieves relevant information on the latest Chrome releases' |
| 438 | 439 |
| 439 def Run(self): | 440 def Run(self): |
| 440 | 441 |
| 441 params = None | 442 params = None |
| 442 result_raw = self.ReadURL( | 443 result_raw = self.ReadURL( |
| 443 "http://omahaproxy.appspot.com/all.json", | 444 OMAHA_PROXY_URL + "all.json", |
| 444 params, | 445 params, |
| 445 wait_plan=[5, 20] | 446 wait_plan=[5, 20] |
| 446 ) | 447 ) |
| 447 recent_releases = json.loads(result_raw) | 448 recent_releases = json.loads(result_raw) |
| 448 | 449 |
| 449 canaries = [] | 450 canaries = [] |
| 450 | 451 |
| 451 for current_os in recent_releases: | 452 for current_os in recent_releases: |
| 452 for current_version in current_os["versions"]: | 453 for current_version in current_os["versions"]: |
| 453 current_candidate = { | 454 if current_version["channel"] != "canary": |
| 454 "chrome_version": current_version["version"], | 455 continue |
| 455 "os": current_version["os"], | |
| 456 "release_date": current_version["current_reldate"], | |
| 457 "v8_version": current_version["v8_version"], | |
| 458 } | |
| 459 | 456 |
| 460 if current_version["channel"] == "canary": | 457 current_candidate = self._CreateCandidate(current_version) |
| 461 canaries.append(current_candidate) | 458 canaries.append(current_candidate) |
| 462 | 459 |
| 463 chrome_releases = {"canaries": canaries} | 460 chrome_releases = {"canaries": canaries} |
| 464 self["chrome_releases"] = chrome_releases | 461 self["chrome_releases"] = chrome_releases |
| 465 | 462 |
| 463 def _GetGitHashForV8Version(self, v8_version): |
| 464 if v8_version.split(".")[3]== "0": |
| 465 return self.GitGetHashOfTag(v8_version[:-2]) |
| 466 |
| 467 return self.GitGetHashOfTag(v8_version) |
| 468 |
| 469 def _CreateCandidate(self, current_version): |
| 470 params = None |
| 471 url_to_call = (OMAHA_PROXY_URL + "v8.json?version=" |
| 472 + current_version["previous_version"]) |
| 473 result_raw = self.ReadURL( |
| 474 url_to_call, |
| 475 params, |
| 476 wait_plan=[5, 20] |
| 477 ) |
| 478 previous_v8_version = json.loads(result_raw)["v8_version"] |
| 479 v8_previous_version_hash = self._GetGitHashForV8Version(previous_v8_version) |
| 480 |
| 481 current_v8_version = current_version["v8_version"] |
| 482 v8_version_hash = self._GetGitHashForV8Version(current_v8_version) |
| 483 |
| 484 current_candidate = { |
| 485 "chrome_version": current_version["version"], |
| 486 "os": current_version["os"], |
| 487 "release_date": current_version["current_reldate"], |
| 488 "v8_version": current_v8_version, |
| 489 "v8_version_hash": v8_version_hash, |
| 490 "v8_previous_version": previous_v8_version, |
| 491 "v8_previous_version_hash": v8_previous_version_hash, |
| 492 } |
| 493 return current_candidate |
| 494 |
| 466 | 495 |
| 467 class CleanUp(Step): | 496 class CleanUp(Step): |
| 468 MESSAGE = "Clean up." | 497 MESSAGE = "Clean up." |
| 469 | 498 |
| 470 def RunStep(self): | 499 def RunStep(self): |
| 471 self.CommonCleanup() | 500 self.CommonCleanup() |
| 472 | 501 |
| 473 | 502 |
| 474 class WriteOutput(Step): | 503 class WriteOutput(Step): |
| 475 MESSAGE = "Print output." | 504 MESSAGE = "Print output." |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 531 RetrieveChromiumV8Releases, | 560 RetrieveChromiumV8Releases, |
| 532 RetrieveChromiumBranches, | 561 RetrieveChromiumBranches, |
| 533 RetrieveInformationOnChromeReleases, | 562 RetrieveInformationOnChromeReleases, |
| 534 CleanUp, | 563 CleanUp, |
| 535 WriteOutput, | 564 WriteOutput, |
| 536 ] | 565 ] |
| 537 | 566 |
| 538 | 567 |
| 539 if __name__ == "__main__": # pragma: no cover | 568 if __name__ == "__main__": # pragma: no cover |
| 540 sys.exit(Releases().Run()) | 569 sys.exit(Releases().Run()) |
| OLD | NEW |