Chromium Code Reviews

Side by Side Diff: tools/release/releases.py

Issue 1063073003: Retrieval of information by release channel (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Chrome release data now dumped into JSON Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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...)
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())
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine