14c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org#!/usr/bin/env python 24c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org# Copyright 2014 the V8 project authors. All rights reserved. 34c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org# Use of this source code is governed by a BSD-style license that can be 44c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org# found in the LICENSE file. 54c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 64c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org""" 74c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgScript for auto-increasing the version on bleeding_edge. 84c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 94c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgThe script can be run regularly by a cron job. It will increase the build 104c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orglevel of the version on bleeding_edge if: 114c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org- the lkgr version is smaller than the version of the latest revision, 124c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org- the lkgr version is not a version change itself, 134c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org- the tree is not closed for maintenance. 144c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 154c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgThe new version will be the maximum of the bleeding_edge and trunk versions +1. 164c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgE.g. latest bleeding_edge version: 3.22.11.0 and latest trunk 3.23.0.0 gives 174c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgthe new version 3.23.1.0. 184c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 194c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgThis script requires a depot tools git checkout. I.e. 'fetch v8'. 204c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org""" 214c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 224c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgimport argparse 234c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgimport os 244c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgimport sys 254c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 264c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgfrom common_includes import * 274c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 284c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgVERSION_BRANCH = "auto-bump-up-version" 294c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 304c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 314c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgclass Preparation(Step): 324c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org MESSAGE = "Preparation." 334c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 344c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org def RunStep(self): 354c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # Check for a clean workdir. 364c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org if not self.GitIsWorkdirClean(): # pragma: no cover 374c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # This is in case a developer runs this script on a dirty tree. 384c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self.GitStash() 394c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 404c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # TODO(machenbach): This should be called master after the git switch. 414c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self.GitCheckout("bleeding_edge") 424c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 434c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self.GitPull() 444c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 454c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # Ensure a clean version branch. 464c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self.DeleteBranch(VERSION_BRANCH) 474c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 484c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 494c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgclass GetCurrentBleedingEdgeVersion(Step): 504c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org MESSAGE = "Get latest bleeding edge version." 514c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 524c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org def RunStep(self): 534c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # TODO(machenbach): This should be called master after the git switch. 544c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self.GitCheckout("bleeding_edge") 554c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 564c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # Store latest version and revision. 574c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self.ReadAndPersistVersion() 584c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self["latest_version"] = self.ArrayToVersion("") 594c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self["latest"] = self.GitLog(n=1, format="%H") 604c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org print "Bleeding edge version: %s" % self["latest_version"] 614c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 624c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 634c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org# This step is pure paranoia. It forbids the script to continue if the last 644c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org# commit changed version.cc. Just in case the other bailout has a bug, this 654c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org# prevents the script from continuously commiting version changes. 664c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgclass LastChangeBailout(Step): 674c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org MESSAGE = "Stop script if the last change modified the version." 684c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 694c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org def RunStep(self): 7006b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org if VERSION_FILE in self.GitChangedFiles(self["latest"]): 714c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org print "Stop due to recent version change." 724c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org return True 734c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 744c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 754c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org# TODO(machenbach): Implement this for git. 764c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgclass FetchLKGR(Step): 774c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org MESSAGE = "Fetching V8 LKGR." 784c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 794c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org def RunStep(self): 804c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org lkgr_url = "https://v8-status.appspot.com/lkgr" 814c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self["lkgr_svn"] = self.ReadURL(lkgr_url, wait_plan=[5]) 824c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 834c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 844c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org# TODO(machenbach): Implement this for git. With a git lkgr we could simply 854c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org# checkout that revision. With svn, we have to search backwards until that 864c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org# revision is found. 874c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgclass GetLKGRVersion(Step): 884c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org MESSAGE = "Get bleeding edge lkgr version." 894c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 904c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org def RunStep(self): 914c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self.GitCheckout("bleeding_edge") 924c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # If the commit was made from svn, there is a mapping entry in the commit 934c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # message. 944c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self["lkgr"] = self.GitLog( 954c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org grep="^git-svn-id: [^@]*@%s [A-Za-z0-9-]*$" % self["lkgr_svn"], 964c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org format="%H") 974c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 984c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # FIXME(machenbach): http://crbug.com/391712 can lead to svn lkgrs on the 994c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # trunk branch (rarely). 1004c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org if not self["lkgr"]: # pragma: no cover 1014c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self.Die("No git hash found for svn lkgr.") 1024c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1034c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self.GitCreateBranch(VERSION_BRANCH, self["lkgr"]) 1044c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self.ReadAndPersistVersion("lkgr_") 1054c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self["lkgr_version"] = self.ArrayToVersion("lkgr_") 1064c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org print "LKGR version: %s" % self["lkgr_version"] 1074c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1084c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # Ensure a clean version branch. 1094c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self.GitCheckout("bleeding_edge") 1104c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self.DeleteBranch(VERSION_BRANCH) 1114c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1124c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1134c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgclass LKGRVersionUpToDateBailout(Step): 1144c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org MESSAGE = "Stop script if the lkgr has a renewed version." 1154c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1164c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org def RunStep(self): 1174c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # If a version-change commit becomes the lkgr, don't bump up the version 1184c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # again. 11906b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org if VERSION_FILE in self.GitChangedFiles(self["lkgr"]): 1204c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org print "Stop because the lkgr is a version change itself." 1214c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org return True 1224c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1234c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # Don't bump up the version if it got updated already after the lkgr. 1244c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org if SortingKey(self["lkgr_version"]) < SortingKey(self["latest_version"]): 1254c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org print("Stop because the latest version already changed since the lkgr " 1264c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org "version.") 1274c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org return True 1284c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1294c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1304c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgclass GetTrunkVersion(Step): 1314c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org MESSAGE = "Get latest trunk version." 1324c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1334c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org def RunStep(self): 1344c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # TODO(machenbach): This should be called trunk after the git switch. 1354c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self.GitCheckout("master") 1364c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self.GitPull() 1374c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self.ReadAndPersistVersion("trunk_") 1384c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self["trunk_version"] = self.ArrayToVersion("trunk_") 1394c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org print "Trunk version: %s" % self["trunk_version"] 1404c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1414c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1424c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgclass CalculateVersion(Step): 1434c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org MESSAGE = "Calculate the new version." 1444c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1454c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org def RunStep(self): 1464c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org if self["lkgr_build"] == "9999": # pragma: no cover 1474c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # If version control on bleeding edge was switched off, just use the last 1484c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # trunk version. 1494c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self["lkgr_version"] = self["trunk_version"] 1504c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1514c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # The new version needs to be greater than the max on bleeding edge and 1524c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # trunk. 1534c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org max_version = max(self["trunk_version"], 1544c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self["lkgr_version"], 1554c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org key=SortingKey) 1564c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1574c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # Strip off possible leading zeros. 1584c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self["new_major"], self["new_minor"], self["new_build"], _ = ( 1594c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org map(str, map(int, max_version.split(".")))) 1604c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1614c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self["new_build"] = str(int(self["new_build"]) + 1) 1624c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self["new_patch"] = "0" 1634c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1644c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self["new_version"] = ("%s.%s.%s.0" % 1654c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org (self["new_major"], self["new_minor"], self["new_build"])) 1664c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org print "New version is %s" % self["new_version"] 1674c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1684c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org if self._options.dry_run: # pragma: no cover 1694c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org print "Dry run, skipping version change." 1704c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org return True 1714c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1724c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1734c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgclass CheckTreeStatus(Step): 1744c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org MESSAGE = "Checking v8 tree status message." 1754c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1764c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org def RunStep(self): 1774c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org status_url = "https://v8-status.appspot.com/current?format=json" 1784c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org status_json = self.ReadURL(status_url, wait_plan=[5, 20, 300, 300]) 1794c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org message = json.loads(status_json)["message"] 1804c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org if re.search(r"maintenance|no commits", message, flags=re.I): 1814c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org print "Skip version change by tree status: \"%s\"" % message 1824c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org return True 1834c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1844c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1854c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgclass ChangeVersion(Step): 1864c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org MESSAGE = "Bump up the version." 1874c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1884c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org def RunStep(self): 1894c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self.GitCreateBranch(VERSION_BRANCH, "bleeding_edge") 1904c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 19106b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org self.SetVersion(os.path.join(self.default_cwd, VERSION_FILE), "new_") 1924c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 1934c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org try: 19442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org msg = "[Auto-roll] Bump up version to %s" % self["new_version"] 19542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org self.GitCommit("%s\n\nTBR=%s" % (msg, self._options.author), 19642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org author=self._options.author) 19742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org if self._options.svn: 19842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org self.SVNCommit("branches/bleeding_edge", msg) 19942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org else: 20042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org self.GitUpload(author=self._options.author, 20142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org force=self._options.force_upload, 20242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org bypass_hooks=True) 20342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org self.GitDCommit() 2044c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org print "Successfully changed the version." 2054c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org finally: 2064c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org # Clean up. 2074c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self.GitCheckout("bleeding_edge") 2084c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org self.DeleteBranch(VERSION_BRANCH) 2094c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 2104c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 2114c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgclass BumpUpVersion(ScriptsBase): 2124c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org def _PrepareOptions(self, parser): 2134c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org parser.add_argument("--dry_run", help="Don't commit the new version.", 2144c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org default=False, action="store_true") 2154c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 2164c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org def _ProcessOptions(self, options): # pragma: no cover 2174c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org if not options.dry_run and not options.author: 2184c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org print "Specify your chromium.org email with -a" 2194c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org return False 2204c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org options.wait_for_lgtm = False 2214c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org options.force_readline_defaults = True 2224c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org options.force_upload = True 2234c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org return True 2244c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 22506b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org def _Config(self): 22606b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org return { 22706b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org "PERSISTFILE_BASENAME": "/tmp/v8-bump-up-version-tempfile", 22806b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org } 22906b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org 2304c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org def _Steps(self): 2314c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org return [ 2324c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org Preparation, 2334c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org GetCurrentBleedingEdgeVersion, 2344c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org LastChangeBailout, 2354c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org FetchLKGR, 2364c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org GetLKGRVersion, 2374c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org LKGRVersionUpToDateBailout, 2384c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org GetTrunkVersion, 2394c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org CalculateVersion, 2404c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org CheckTreeStatus, 2414c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org ChangeVersion, 2424c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org ] 2434c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.org 2444c3ce7c3fd2802da8f91c6516a9c9aea3cd93f1emachenbach@chromium.orgif __name__ == "__main__": # pragma: no cover 24506b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org sys.exit(BumpUpVersion().Run()) 246