| Index: tools/push-to-trunk/generate_version.py | 
| diff --git a/tools/push-to-trunk/generate_version.py b/tools/push-to-trunk/generate_version.py | 
| index 12885066c675c9bbbe2413ef4a55b0af35999597..b4a0221eae5c10224a18d79bf8067ca3df958177 100755 | 
| --- a/tools/push-to-trunk/generate_version.py | 
| +++ b/tools/push-to-trunk/generate_version.py | 
| @@ -5,23 +5,9 @@ | 
|  | 
| """ | 
| Script to set v8's version file to the version given by the latest tag. | 
| - | 
| -The script can be run in two modes: | 
| -1) As a gclient hook with the option --hook. | 
| -   The script will write a temporary version file into the checkout. | 
| -2) During compilation as an action. | 
| -   The script will write version.cc in the output folder based on the | 
| -   tag info. In case of a failure it will fall back to the temporary file | 
| -   from the hook call. | 
| - | 
| -In most cases, 2) will succeed and the temporary information from 1) won't | 
| -be used. In case the checkout is copied somewhere and the git context is | 
| -lost (e.g. on the android_aosp builder), the temporary file from 1) is | 
| -required. | 
| """ | 
|  | 
|  | 
| -import optparse | 
| import os | 
| import re | 
| import subprocess | 
| @@ -31,10 +17,8 @@ | 
| CWD = os.path.abspath( | 
| os.path.dirname(os.path.dirname(os.path.dirname(__file__)))) | 
| VERSION_CC = os.path.join(CWD, "src", "version.cc") | 
| -TMP_VERSION_CC = os.path.join(CWD, ".version.cc") | 
|  | 
| - | 
| -def generate_version_file(): | 
| +def main(): | 
| tag = subprocess.check_output( | 
| "git describe --tags", | 
| shell=True, | 
| @@ -66,68 +50,28 @@ | 
| patch = "0" | 
|  | 
| # Modify version.cc with the new values. | 
| +  with open(VERSION_CC, "r") as f: | 
| +    text = f.read() | 
| output = [] | 
| -  with open(VERSION_CC, "r") as f: | 
| -    for line in f: | 
| -      for definition, substitute in ( | 
| -          ("MAJOR_VERSION", major), | 
| -          ("MINOR_VERSION", minor), | 
| -          ("BUILD_NUMBER", build), | 
| -          ("PATCH_LEVEL", patch), | 
| -          ("IS_CANDIDATE_VERSION", candidate)): | 
| -        if line.startswith("#define %s" % definition): | 
| -          line =  re.sub("\d+$", substitute, line) | 
| -      output.append(line) | 
| -  # Log what was calculated. | 
| +  for line in text.split("\n"): | 
| +    for definition, substitute in ( | 
| +        ("MAJOR_VERSION", major), | 
| +        ("MINOR_VERSION", minor), | 
| +        ("BUILD_NUMBER", build), | 
| +        ("PATCH_LEVEL", patch), | 
| +        ("IS_CANDIDATE_VERSION", candidate)): | 
| +      if line.startswith("#define %s" % definition): | 
| +        line =  re.sub("\d+$", substitute, line) | 
| +    output.append(line) | 
| +  with open(VERSION_CC, "w") as f: | 
| +    f.write("\n".join(output)) | 
| + | 
| +  # Log what was done. | 
| candidate_txt = " (candidate)" if candidate == "1" else "" | 
| patch_txt = ".%s" % patch if patch != "0" else "" | 
| version_txt = ("%s.%s.%s%s%s" % | 
| (major, minor, build, patch_txt, candidate_txt)) | 
| -  print "Modifying version.cc. Set V8 version to %s" %  version_txt | 
| -  return "".join(output) | 
| - | 
| - | 
| -def delete_tmp_version_file(): | 
| -  # Make sure a subsequent call to this script doesn't use an outdated | 
| -  # version file. | 
| -  if os.path.exists(TMP_VERSION_CC): | 
| -    os.remove(TMP_VERSION_CC) | 
| - | 
| - | 
| -def main(): | 
| -  parser = optparse.OptionParser() | 
| -  parser.add_option("--hook", | 
| -                    help="Run as a gclient hook", | 
| -                    default=False, action="store_true") | 
| -  (options, args) = parser.parse_args() | 
| - | 
| -  if options.hook: | 
| -    version_out = TMP_VERSION_CC | 
| -  else: | 
| -    if len(args) != 1: | 
| -      print "Error: Specify the output file path for version.cc" | 
| -      return 1 | 
| -    version_out = args[0] | 
| - | 
| -  assert os.path.exists(os.path.dirname(version_out)) | 
| - | 
| -  try: | 
| -    version_file_content = generate_version_file() | 
| -  except Exception as e: | 
| -    # Allow exceptions when run during compilation. E.g. there might be no git | 
| -    # context availabe. When run as a gclient hook, generation must succeed. | 
| -    if options.hook: | 
| -      delete_tmp_version_file() | 
| -      raise e | 
| -    # Assume the script already ran as a hook. | 
| -    print "No git context available. Using V8 version from hook." | 
| -    assert os.path.exists(TMP_VERSION_CC) | 
| -    with open(TMP_VERSION_CC, "r") as f: | 
| -      version_file_content = f.read() | 
| - | 
| -  delete_tmp_version_file() | 
| -  with open(version_out, "w") as f: | 
| -    f.write(version_file_content) | 
| +  print "Modified version.cc. Set V8 version to %s" %  version_txt | 
| return 0 | 
|  | 
| if __name__ == "__main__": | 
|  |