Index: build/generate_version.py |
diff --git a/build/generate_version.py b/build/generate_version.py |
deleted file mode 100755 |
index 930e4857fb7defa4739450353e7049c2f9879845..0000000000000000000000000000000000000000 |
--- a/build/generate_version.py |
+++ /dev/null |
@@ -1,149 +0,0 @@ |
-#!/usr/bin/env python |
-# Copyright 2014 the V8 project authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-""" |
-Script to set v8's version file to the version given by the latest tag. |
- |
-The script is intended to be run as a gclient hook. The script will write a |
-generated version file into the checkout. |
- |
-On build systems where no git is available and where the version information |
-is not necessary, the version generation can be bypassed with the option |
---skip. |
-""" |
- |
- |
-import optparse |
-import os |
-import re |
-import subprocess |
-import sys |
- |
- |
-CWD = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) |
-VERSION_CC = os.path.join(CWD, "src", "version.cc") |
-VERSION_GEN_CC = os.path.join(CWD, "src", "version_gen.cc") |
- |
-VERSION_RE_RAW = r"^(?P<major>\d+)\.(?P<minor>\d+)\.(?P<build>\d+)" |
-VERSION_RE = re.compile(VERSION_RE_RAW + r"$") |
-VERSION_WITH_PATCH_RE = re.compile(VERSION_RE_RAW + r"\.(?P<patch>\d+)$") |
- |
-def generate_version_file(): |
- # Make sure the tags are fetched from cached git repos. |
- url = subprocess.check_output( |
- "git config --get remote.origin.url", |
- shell=True, |
- cwd=CWD).strip() |
- if not url.startswith("http"): |
- subprocess.check_output( |
- "git fetch origin +refs/tags/*:refs/tags/*", |
- shell=True, |
- cwd=CWD) |
- tag = subprocess.check_output( |
- "git describe --tags", |
- shell=True, |
- cwd=CWD, |
- ).strip() |
- assert tag |
- |
- # Check for commits not exactly matching a tag. Those are candidate builds |
- # for the next version. The output has the form |
- # <tag name>-<n commits>-<hash>. |
- if "-" in tag: |
- version = tag.split("-")[0] |
- candidate = "1" |
- else: |
- version = tag |
- candidate = "0" |
- |
- match = VERSION_RE.match(version) |
- match_patch = VERSION_WITH_PATCH_RE.match(version) |
- if match: |
- # Simple version e.g. "3.30.5". |
- major = match.group("major") |
- minor = match.group("minor") |
- build = match.group("build") |
- patch = "0" |
- invalid = "0" |
- elif match_patch: |
- # Version with patch level e.g. "3.30.5.2". |
- major = match.group("major") |
- minor = match.group("minor") |
- build = match.group("build") |
- patch = match.group("patch") |
- invalid = "0" |
- else: |
- # A tag was found that's not a version string. |
- major = "0" |
- minor = "0" |
- build = "0" |
- patch = "0" |
- invalid = "1" |
- |
- # Increment build level for candidate builds. |
- if candidate == "1" and invalid != "1": |
- build = str(int(build) + 1) |
- patch = "0" |
- |
- # Modify version_gen.cc with the new values. |
- 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), |
- ("IS_INVALID_VERSION", invalid)): |
- if line.startswith("#define %s" % definition): |
- line = re.sub("\d+$", substitute, line) |
- output.append(line) |
- |
- # Prepare log message. |
- suffix_txt = " (candidate)" if candidate == "1" else "" |
- suffix_txt = " (invalid)" if invalid == "1" else suffix_txt |
- patch_txt = ".%s" % patch if patch != "0" else "" |
- version_txt = ("%s.%s.%s%s%s" % |
- (major, minor, build, patch_txt, suffix_txt)) |
- log_message = "Modifying version_gen.cc. Set V8 version to %s" % version_txt |
- return "".join(output), log_message |
- |
- |
-def bypass_version_file(): |
- with open(VERSION_CC, "r") as f: |
- return f.read(), "Bypassing V8 version creation." |
- |
- |
-def main(): |
- parser = optparse.OptionParser() |
- parser.add_option("--skip", |
- help="Use raw version.cc file (disables version " |
- "generation and uses a dummy version).", |
- default=False, action="store_true") |
- (options, args) = parser.parse_args() |
- |
- if options.skip: |
- version_file_content, log_message = bypass_version_file() |
- else: |
- version_file_content, log_message = generate_version_file() |
- |
- old_content = "" |
- if os.path.exists(VERSION_GEN_CC): |
- with open(VERSION_GEN_CC, "r") as f: |
- old_content = f.read() |
- |
- # Only generate version file if content has changed. |
- if old_content != version_file_content: |
- with open(VERSION_GEN_CC, "w") as f: |
- f.write(version_file_content) |
- # Log what was calculated. |
- print log_message |
- |
- return 0 |
- |
- |
-if __name__ == "__main__": |
- sys.exit(main()) |