Merge pull request #18568 from case540/enable_git_tag_override
Add ability to override git tag in __git_version__ string.
This commit is contained in:
parent
3970b47da5
commit
7810e47e7d
@ -1704,7 +1704,7 @@ def tf_version_info_genrule():
|
|||||||
],
|
],
|
||||||
outs=["util/version_info.cc"],
|
outs=["util/version_info.cc"],
|
||||||
cmd=
|
cmd=
|
||||||
"$(location //tensorflow/tools/git:gen_git_source.py) --generate $(SRCS) \"$@\"",
|
"$(location //tensorflow/tools/git:gen_git_source.py) --generate $(SRCS) \"$@\" --git_tag_override=$${GIT_TAG_OVERRIDE:-}",
|
||||||
local=1,
|
local=1,
|
||||||
tools=[clean_dep("//tensorflow/tools/git:gen_git_source.py")],)
|
tools=[clean_dep("//tensorflow/tools/git:gen_git_source.py")],)
|
||||||
|
|
||||||
|
|||||||
@ -139,7 +139,7 @@ def configure(src_base_path, gen_path, debug=False):
|
|||||||
print("gen_git_source.py: spec is %r" % spec)
|
print("gen_git_source.py: spec is %r" % spec)
|
||||||
|
|
||||||
|
|
||||||
def get_git_version(git_base_path):
|
def get_git_version(git_base_path, git_tag_override):
|
||||||
"""Get the git version from the repository.
|
"""Get the git version from the repository.
|
||||||
|
|
||||||
This function runs `git describe ...` in the path given as `git_base_path`.
|
This function runs `git describe ...` in the path given as `git_base_path`.
|
||||||
@ -152,6 +152,9 @@ def get_git_version(git_base_path):
|
|||||||
|
|
||||||
Args:
|
Args:
|
||||||
git_base_path: where the .git directory is located
|
git_base_path: where the .git directory is located
|
||||||
|
git_tag_override: Override the value for the git tag. This is useful for
|
||||||
|
releases where we want to build the release before the git tag is
|
||||||
|
created.
|
||||||
Returns:
|
Returns:
|
||||||
A bytestring representing the git version
|
A bytestring representing the git version
|
||||||
"""
|
"""
|
||||||
@ -161,6 +164,14 @@ def get_git_version(git_base_path):
|
|||||||
"git", str("--git-dir=%s/.git" % git_base_path),
|
"git", str("--git-dir=%s/.git" % git_base_path),
|
||||||
str("--work-tree=" + git_base_path), "describe", "--long", "--tags"
|
str("--work-tree=" + git_base_path), "describe", "--long", "--tags"
|
||||||
]).strip())
|
]).strip())
|
||||||
|
if git_tag_override:
|
||||||
|
split_val = val.split("-")
|
||||||
|
if len(split_val) != 3:
|
||||||
|
raise Exception(
|
||||||
|
("Expected git version in format 'TAG-COMMITS AFTER TAG-HASH' "
|
||||||
|
"but got '%s'") % val)
|
||||||
|
split_val[0] = git_tag_override
|
||||||
|
val = bytes("-".join(split_val))
|
||||||
return val if val else unknown_label
|
return val if val else unknown_label
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
return unknown_label
|
return unknown_label
|
||||||
@ -197,7 +208,7 @@ const int tf_monolithic_build() {
|
|||||||
open(filename, "w").write(contents)
|
open(filename, "w").write(contents)
|
||||||
|
|
||||||
|
|
||||||
def generate(arglist):
|
def generate(arglist, git_tag_override=None):
|
||||||
"""Generate version_info.cc as given `destination_file`.
|
"""Generate version_info.cc as given `destination_file`.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@ -217,6 +228,10 @@ def generate(arglist):
|
|||||||
`ref_symlink` is unused in this script but passed, because the build
|
`ref_symlink` is unused in this script but passed, because the build
|
||||||
system uses that file to detect when commits happen.
|
system uses that file to detect when commits happen.
|
||||||
|
|
||||||
|
git_tag_override: Override the value for the git tag. This is useful for
|
||||||
|
releases where we want to build the release before the git tag is
|
||||||
|
created.
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
RuntimeError: If ./configure needs to be run, RuntimeError will be raised.
|
RuntimeError: If ./configure needs to be run, RuntimeError will be raised.
|
||||||
"""
|
"""
|
||||||
@ -234,11 +249,11 @@ def generate(arglist):
|
|||||||
raise RuntimeError(
|
raise RuntimeError(
|
||||||
"Run ./configure again, branch was '%s' but is now '%s'" %
|
"Run ./configure again, branch was '%s' but is now '%s'" %
|
||||||
(old_branch, new_branch))
|
(old_branch, new_branch))
|
||||||
git_version = get_git_version(data["path"])
|
git_version = get_git_version(data["path"], git_tag_override)
|
||||||
write_version_info(dest_file, git_version)
|
write_version_info(dest_file, git_version)
|
||||||
|
|
||||||
|
|
||||||
def raw_generate(output_file):
|
def raw_generate(output_file, git_tag_override=None):
|
||||||
"""Simple generator used for cmake/make build systems.
|
"""Simple generator used for cmake/make build systems.
|
||||||
|
|
||||||
This does not create any symlinks. It requires the build system
|
This does not create any symlinks. It requires the build system
|
||||||
@ -246,9 +261,12 @@ def raw_generate(output_file):
|
|||||||
|
|
||||||
Args:
|
Args:
|
||||||
output_file: Output filename for the version info cc
|
output_file: Output filename for the version info cc
|
||||||
|
git_tag_override: Override the value for the git tag. This is useful for
|
||||||
|
releases where we want to build the release before the git tag is
|
||||||
|
created.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
git_version = get_git_version(".")
|
git_version = get_git_version(".", git_tag_override)
|
||||||
write_version_info(output_file, git_version)
|
write_version_info(output_file, git_version)
|
||||||
|
|
||||||
|
|
||||||
@ -270,6 +288,11 @@ parser.add_argument(
|
|||||||
"--gen_root_path", type=str,
|
"--gen_root_path", type=str,
|
||||||
help="Root path to place generated git files (created by --configure).")
|
help="Root path to place generated git files (created by --configure).")
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"--git_tag_override", type=str,
|
||||||
|
help="Override git tag value in the __git_version__ string. Useful when "
|
||||||
|
"creating release builds before the release tag is created.")
|
||||||
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--generate",
|
"--generate",
|
||||||
type=str,
|
type=str,
|
||||||
@ -288,9 +311,9 @@ if args.configure is not None:
|
|||||||
raise RuntimeError("Must pass --gen_root_path arg when running --configure")
|
raise RuntimeError("Must pass --gen_root_path arg when running --configure")
|
||||||
configure(args.configure, args.gen_root_path, debug=args.debug)
|
configure(args.configure, args.gen_root_path, debug=args.debug)
|
||||||
elif args.generate is not None:
|
elif args.generate is not None:
|
||||||
generate(args.generate)
|
generate(args.generate, args.git_tag_override)
|
||||||
elif args.raw_generate is not None:
|
elif args.raw_generate is not None:
|
||||||
raw_generate(args.raw_generate)
|
raw_generate(args.raw_generate, args.git_tag_override)
|
||||||
else:
|
else:
|
||||||
raise RuntimeError("--configure or --generate or --raw_generate "
|
raise RuntimeError("--configure or --generate or --raw_generate "
|
||||||
"must be used")
|
"must be used")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user