mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-06 12:20:52 +01:00
During build, users commonly see a message like ``` fatal: no tag exactly matches 'd8b4f33324b1eb6c1103874764116fb68e0d0af4' ``` which is usually ignored when builds succeed, but has confused users when build fails (due to a different issue). This PR removes the red herring, since this usually prints for local development when tags are not found. We catch the exception anyway and handle it under the hood, so we don't need to print it and confuse the user. Test plan: Note that builds on trunk current have this line, cmd-F 'fatal: no tag exactly matches' in https://github.com/pytorch/pytorch/actions/runs/3379162092/jobs/5610355820. Then check in the PR build to see that the line no longer appears. I also tagged my commit locally and printed what tag would be--this code and the old code printed the same results for what tag would be. Pull Request resolved: https://github.com/pytorch/pytorch/pull/88335 Approved by: https://github.com/seemethere
96 lines
3.1 KiB
Python
96 lines
3.1 KiB
Python
import argparse
|
|
import os
|
|
import re
|
|
import subprocess
|
|
from pathlib import Path
|
|
from typing import Optional, Union
|
|
|
|
from setuptools import distutils # type: ignore[import]
|
|
|
|
|
|
UNKNOWN = "Unknown"
|
|
RELEASE_PATTERN = re.compile(r"/v[0-9]+(\.[0-9]+)*(-rc[0-9]+)?/")
|
|
|
|
|
|
def get_sha(pytorch_root: Union[str, Path]) -> str:
|
|
try:
|
|
return (
|
|
subprocess.check_output(["git", "rev-parse", "HEAD"], cwd=pytorch_root)
|
|
.decode("ascii")
|
|
.strip()
|
|
)
|
|
except Exception:
|
|
return UNKNOWN
|
|
|
|
|
|
def get_tag(pytorch_root: Union[str, Path]) -> str:
|
|
try:
|
|
tag = subprocess.run(
|
|
["git", "describe", "--tags", "--exact"],
|
|
cwd=pytorch_root,
|
|
encoding="ascii",
|
|
capture_output=True,
|
|
).stdout.strip()
|
|
if RELEASE_PATTERN.match(tag):
|
|
return tag
|
|
else:
|
|
return UNKNOWN
|
|
except Exception:
|
|
return UNKNOWN
|
|
|
|
|
|
def get_torch_version(sha: Optional[str] = None) -> str:
|
|
pytorch_root = Path(__file__).parent.parent
|
|
version = open(pytorch_root / "version.txt", "r").read().strip()
|
|
|
|
if os.getenv("PYTORCH_BUILD_VERSION"):
|
|
assert os.getenv("PYTORCH_BUILD_NUMBER") is not None
|
|
build_number = int(os.getenv("PYTORCH_BUILD_NUMBER", ""))
|
|
version = os.getenv("PYTORCH_BUILD_VERSION", "")
|
|
if build_number > 1:
|
|
version += ".post" + str(build_number)
|
|
elif sha != UNKNOWN:
|
|
if sha is None:
|
|
sha = get_sha(pytorch_root)
|
|
version += "+git" + sha[:7]
|
|
return version
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(
|
|
description="Generate torch/version.py from build and environment metadata."
|
|
)
|
|
parser.add_argument(
|
|
"--is_debug",
|
|
type=distutils.util.strtobool,
|
|
help="Whether this build is debug mode or not.",
|
|
)
|
|
parser.add_argument("--cuda_version", type=str)
|
|
parser.add_argument("--hip_version", type=str)
|
|
|
|
args = parser.parse_args()
|
|
|
|
assert args.is_debug is not None
|
|
args.cuda_version = None if args.cuda_version == "" else args.cuda_version
|
|
args.hip_version = None if args.hip_version == "" else args.hip_version
|
|
|
|
pytorch_root = Path(__file__).parent.parent
|
|
version_path = pytorch_root / "torch" / "version.py"
|
|
# Attempt to get tag first, fall back to sha if a tag was not found
|
|
tagged_version = get_tag(pytorch_root)
|
|
sha = get_sha(pytorch_root)
|
|
if tagged_version == UNKNOWN:
|
|
version = get_torch_version(sha)
|
|
else:
|
|
version = tagged_version
|
|
|
|
with open(version_path, "w") as f:
|
|
f.write("__version__ = '{}'\n".format(version))
|
|
# NB: This is not 100% accurate, because you could have built the
|
|
# library code with DEBUG, but csrc without DEBUG (in which case
|
|
# this would claim to be a release build when it's not.)
|
|
f.write("debug = {}\n".format(repr(bool(args.is_debug))))
|
|
f.write("cuda = {}\n".format(repr(args.cuda_version)))
|
|
f.write("git_version = {}\n".format(repr(sha)))
|
|
f.write("hip = {}\n".format(repr(args.hip_version)))
|