Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(72)

Side by Side Diff: tools/push-to-trunk/generate_version.py

Issue 830093003: Partially reland Auto-generate v8 version based on tags. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Review Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « build/generate_version.py ('k') | 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
(Empty)
1 #!/usr/bin/env python
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
4 # found in the LICENSE file.
5
6 """
7 Script to set v8's version file to the version given by the latest tag.
8 """
9
10
11 import os
12 import re
13 import subprocess
14 import sys
15
16
17 CWD = os.path.abspath(
18 os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
19 VERSION_CC = os.path.join(CWD, "src", "version.cc")
20
21 def main():
22 tag = subprocess.check_output(
23 "git describe --tags",
24 shell=True,
25 cwd=CWD,
26 ).strip()
27 assert tag
28
29 # Check for commits not exactly matching a tag. Those are candidate builds
30 # for the next version. The output has the form
31 # <tag name>-<n commits>-<hash>.
32 if "-" in tag:
33 version = tag.split("-")[0]
34 candidate = "1"
35 else:
36 version = tag
37 candidate = "0"
38 version_levels = version.split(".")
39
40 # Set default patch level if none is given.
41 if len(version_levels) == 3:
42 version_levels.append("0")
43 assert len(version_levels) == 4
44
45 major, minor, build, patch = version_levels
46
47 # Increment build level for candidate builds.
48 if candidate == "1":
49 build = str(int(build) + 1)
50 patch = "0"
51
52 # Modify version.cc with the new values.
53 with open(VERSION_CC, "r") as f:
54 text = f.read()
55 output = []
56 for line in text.split("\n"):
57 for definition, substitute in (
58 ("MAJOR_VERSION", major),
59 ("MINOR_VERSION", minor),
60 ("BUILD_NUMBER", build),
61 ("PATCH_LEVEL", patch),
62 ("IS_CANDIDATE_VERSION", candidate)):
63 if line.startswith("#define %s" % definition):
64 line = re.sub("\d+$", substitute, line)
65 output.append(line)
66 with open(VERSION_CC, "w") as f:
67 f.write("\n".join(output))
68
69 # Log what was done.
70 candidate_txt = " (candidate)" if candidate == "1" else ""
71 patch_txt = ".%s" % patch if patch != "0" else ""
72 version_txt = ("%s.%s.%s%s%s" %
73 (major, minor, build, patch_txt, candidate_txt))
74 print "Modified version.cc. Set V8 version to %s" % version_txt
75 return 0
76
77 if __name__ == "__main__":
78 sys.exit(main())
OLDNEW
« no previous file with comments | « build/generate_version.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698