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 426 matching lines...) Loading... | |
437 MESSAGE = "Clean up." | 437 MESSAGE = "Clean up." |
438 | 438 |
439 def RunStep(self): | 439 def RunStep(self): |
440 self.CommonCleanup() | 440 self.CommonCleanup() |
441 | 441 |
442 | 442 |
443 class WriteOutput(Step): | 443 class WriteOutput(Step): |
444 MESSAGE = "Print output." | 444 MESSAGE = "Print output." |
445 | 445 |
446 def Run(self): | 446 def Run(self): |
447 | |
448 output = {'releases':self['releases'], | |
449 'chrome_releases':self['chrome_releases']} | |
450 | |
447 if self._options.csv: | 451 if self._options.csv: |
448 with open(self._options.csv, "w") as f: | 452 with open(self._options.csv, "w") as f: |
449 writer = csv.DictWriter(f, | 453 writer = csv.DictWriter(f, |
450 ["version", "branch", "revision", | 454 ["version", "branch", "revision", |
451 "chromium_revision", "patches_merged"], | 455 "chromium_revision", "patches_merged"], |
452 restval="", | 456 restval="", |
453 extrasaction="ignore") | 457 extrasaction="ignore") |
454 for release in self["releases"]: | 458 for release in self["releases"]: |
455 writer.writerow(release) | 459 writer.writerow(release) |
456 if self._options.json: | 460 if self._options.json: |
457 with open(self._options.json, "w") as f: | 461 with open(self._options.json, "w") as f: |
458 f.write(json.dumps(self["releases"])) | 462 f.write(json.dumps(output)) |
459 if not self._options.csv and not self._options.json: | 463 if not self._options.csv and not self._options.json: |
460 print self["releases"] # pragma: no cover | 464 print output # pragma: no cover |
461 | 465 |
462 | 466 |
463 class Releases(ScriptsBase): | 467 class Releases(ScriptsBase): |
464 def _PrepareOptions(self, parser): | 468 def _PrepareOptions(self, parser): |
465 parser.add_argument("-b", "--branch", default="recent", | 469 parser.add_argument("-b", "--branch", default="recent", |
466 help=("The branch to analyze. If 'all' is specified, " | 470 help=("The branch to analyze. If 'all' is specified, " |
467 "analyze all branches. If 'recent' (default) " | 471 "analyze all branches. If 'recent' (default) " |
468 "is specified, track beta, stable and " | 472 "is specified, track beta, stable and " |
469 "candidates.")) | 473 "candidates.")) |
470 parser.add_argument("-c", "--chromium", | 474 parser.add_argument("-c", "--chromium", |
471 help=("The path to your Chromium src/ " | 475 help=("The path to your Chromium src/ " |
472 "directory to automate the V8 roll.")) | 476 "directory to automate the V8 roll.")) |
473 parser.add_argument("--csv", help="Path to a CSV file for export.") | 477 parser.add_argument("--csv", help="Path to a CSV file for export.") |
474 parser.add_argument("-m", "--max-releases", type=int, default=0, | 478 parser.add_argument("-m", "--max-releases", type=int, default=0, |
475 help="The maximum number of releases to track.") | 479 help="The maximum number of releases to track.") |
476 parser.add_argument("--json", help="Path to a JSON file for export.") | 480 parser.add_argument("--json", help="Path to a JSON file for export.") |
477 | 481 |
478 def _ProcessOptions(self, options): # pragma: no cover | 482 def _ProcessOptions(self, options): # pragma: no cover |
479 options.force_readline_defaults = True | 483 options.force_readline_defaults = True |
480 return True | 484 return True |
481 | 485 |
482 def _Config(self): | 486 def _Config(self): |
483 return { | 487 return { |
484 "BRANCHNAME": "retrieve-v8-releases", | 488 "BRANCHNAME": "retrieve-v8-releases", |
485 "PERSISTFILE_BASENAME": "/tmp/v8-releases-tempfile", | 489 "PERSISTFILE_BASENAME": "/tmp/v8-releases-tempfile", |
486 } | 490 } |
487 | 491 |
488 def _Steps(self): | 492 def _Steps(self): |
493 | |
489 return [ | 494 return [ |
490 Preparation, | 495 Preparation, |
491 RetrieveV8Releases, | 496 RetrieveV8Releases, |
492 UpdateChromiumCheckout, | 497 UpdateChromiumCheckout, |
493 RetrieveChromiumV8Releases, | 498 RetrieveChromiumV8Releases, |
494 RietrieveChromiumBranches, | 499 RietrieveChromiumBranches, |
Michael Achenbach
2015/04/15 09:27:53
nit: could you clean up my old spelling mistake: R
Michael Hablich
2015/04/15 09:35:44
Acknowledged.
| |
500 RetrieveInformationOnCanary, | |
495 CleanUp, | 501 CleanUp, |
496 WriteOutput, | 502 WriteOutput |
Michael Achenbach
2015/04/15 09:27:53
nit: , in the end are generally recommended in cas
Michael Hablich
2015/04/15 09:35:44
Acknowledged.
| |
497 ] | 503 ] |
498 | 504 |
499 | 505 |
Michael Achenbach
2015/04/15 09:27:53
Please move class up so that the order of steps ma
Michael Hablich
2015/04/15 09:35:44
Acknowledged.
| |
506 class RetrieveInformationOnCanary(Step): | |
507 MESSAGE = 'Retrieves relevant information on the latest Chrome Canary' | |
508 | |
509 def Run(self): | |
510 | |
511 params = None | |
512 resultRaw = self.ReadURL('http://omahaproxy.appspot.com/all.json', params, w ait_plan=[5, 20]) | |
Michael Achenbach
2015/04/15 09:27:53
nit: 80 chars
Michael Achenbach
2015/04/15 09:27:53
nit: All v8-side scripts use " instead of ' due to
Michael Achenbach
2015/04/15 09:27:53
nit (style): Use _ for local variables not camel c
Michael Hablich
2015/04/15 09:35:44
Acknowledged.
Michael Hablich
2015/04/15 09:35:44
Acknowledged.
Michael Hablich
2015/04/15 09:35:44
Acknowledged.
Michael Hablich
2015/04/15 09:35:45
Acknowledged.
| |
513 recentReleases = json.loads(resultRaw) | |
514 print recentReleases | |
Michael Achenbach
2015/04/15 09:27:53
Can the print go away in the final version? Or pre
Michael Hablich
2015/04/15 09:35:45
Will go away.
| |
515 | |
516 allCanaries = [] | |
Michael Achenbach
2015/04/15 09:27:53
Call just canaries?
Michael Hablich
2015/04/15 09:35:44
Acknowledged.
| |
517 | |
518 for currentOS in recentReleases: | |
519 for currentVersion in currentOS['versions']: | |
520 currentCandidate = {'version':currentVersion['version'], | |
Michael Achenbach
2015/04/15 09:27:53
Move under the condition below? Or are there comin
Michael Achenbach
2015/04/15 09:27:53
Please qualify 'version' since we have more now, e
Michael Hablich
2015/04/15 09:35:44
Acknowledged.
Michael Hablich
2015/04/15 09:35:44
More channels coming. Wanted to finish Canary firs
| |
521 'os':currentVersion['os'], | |
Michael Achenbach
2015/04/15 09:27:53
nit: indentation - either align all keys or use a
Michael Hablich
2015/04/15 09:35:44
Acknowledged.
| |
522 'release_date': currentVersion['current_reldate'], | |
523 'v8_version':currentVersion['v8_version']} | |
Michael Achenbach
2015/04/15 09:27:53
nit: always one space after : also below
Michael Hablich
2015/04/15 09:35:44
Acknowledged.
| |
524 | |
525 if currentVersion['channel'] == 'canary': | |
526 allCanaries.append(currentCandidate) | |
527 | |
528 chromeReleases = {'canaries':allCanaries} | |
529 self['chrome_releases'] = chromeReleases | |
530 | |
531 | |
500 if __name__ == "__main__": # pragma: no cover | 532 if __name__ == "__main__": # pragma: no cover |
501 sys.exit(Releases().Run()) | 533 sys.exit(Releases().Run()) |
OLD | NEW |