You need to sign in or sign up before continuing.
Commit 5feb5693 authored by limm's avatar limm
Browse files

modify the whl package nameing convention

parent 753afb07
import os
import re
import subprocess
from pathlib import Path
import torch
ROOT_DIR = Path(__file__).parent.resolve()
def _run_cmd(cmd, shell=False):
try:
return subprocess.check_output(cmd, cwd=ROOT_DIR, stderr=subprocess.DEVNULL, shell=shell).decode("ascii").strip()
except Exception:
return None
def _get_version():
if os.path.exists(ROOT_DIR / "mmcv/version.py"):
with open(ROOT_DIR / "mmcv/version.py", "r") as f:
content = f.read().strip()
version_match = re.search("__version__\s*=\s*['\"]([^'\"]+)['\"]", content)
if version_match:
print(f"version_match.group(1) = {version_match.group(1)}")
print(f"version_match.group(0) = {version_match.group(0)}")
version = version_match.group(1)
else:
version = '2.2.0'
if os.getenv("BUILD_VERSION"):
version = os.getenv("BUILD_VERSION")
return version
def _update_hcu_version(version, das_version, sha, abi, dtk, torch_version, branch):
"""
修改 __hcu_version__ 的值,不改变其他内容。
:param file_path: 要修改的 .py 文件路径
:param new_value: 新的版本号字符串,比如 '2.2.0+das.opt1.dtk25041'
"""
sha = "Unknown" if sha is None else sha
hcu_version = f"{das_version}"
file_path = ROOT_DIR / "mmcv" / "version.py"
# 读取整个文件内容
with open(file_path, "r", encoding="utf-8") as f:
content = f.read()
# 正则匹配 __hcu_version__ 行,并替换引号内的值
pattern = r"(__hcu_version__\s*=\s*)['\"]([^'\"]*)['\"]"
replacement = rf"\g<1>'{hcu_version}'"
# 执行替换
updated_content = re.sub(pattern, replacement, content)
# 写回文件
with open(file_path, "w", encoding="utf-8") as f:
f.write(updated_content)
return hcu_version
def get_origin_version():
version_file = ROOT_DIR / 'mmcv/version.py'
with open(version_file, encoding='utf-8') as f:
exec(compile(f.read(), version_file, 'exec'))
return locals()['__version__']
def _make_version_file(version, das_version, sha, abi, dtk, torch_version, branch):
sha = "Unknown" if sha is None else sha
# torch_version = '.'.join(torch_version.split('.')[:2])
# hcu_version = f"{das_version}.git{sha}.abi{abi}.dtk{dtk}.torch{torch_version}"
hcu_version = f"{das_version}"
version_path = ROOT_DIR / "mmcv" / "version.py"
with open(version_path, "a", encoding="utf-8") as f:
#f.write(f"version = '{version}'\n")
#f.write(f"git_hash = '{sha}'\n")
#f.write(f"git_branch = '{branch}'\n")
#f.write(f"abi = 'abi{abi}'\n")
#f.write(f"dtk = '{dtk}'\n")
#f.write(f"torch_version = '{torch_version}'\n")
f.write(f"__hcu_version__ = '{hcu_version}'\n")
return hcu_version
def _get_pytorch_version():
if "PYTORCH_VERSION" in os.environ:
return f"{os.environ['PYTORCH_VERSION']}"
return torch.__version__
def get_version():
ROCM_HOME = os.getenv("ROCM_PATH")
print("ROCM_HOME = {ROCM_HOME}")
if not ROCM_HOME:
return get_origin_version()
sha = _run_cmd(["git", "rev-parse", "HEAD"])
sha = sha[:7]
branch = _run_cmd(["git", "rev-parse", "--abbrev-ref", "HEAD"])
tag = _run_cmd(["git", "describe", "--tags", "--exact-match", "@"])
das_tag = _run_cmd(["git", "describe", "--abbrev=0"])
print("-- Git branch:", branch)
print("-- Git SHA:", sha)
print("-- Git tag:", tag)
torch_version = _get_pytorch_version()
print("-- PyTorch:", torch_version)
version = _get_version()
print("-- Building version", version)
# das_version = tag
das_version = version+"+das.opt1"
print("-- Building das_version", das_version)
abi = _run_cmd(["echo '#include <string>' | gcc -x c++ -E -dM - | fgrep _GLIBCXX_USE_CXX11_ABI | awk '{print $3}'"], shell=True)
print("-- _GLIBCXX_USE_CXX11_ABI:", abi)
dtk = _run_cmd(["cat", os.path.join(ROCM_HOME, '.info/rocm_version')])
dtk = ''.join(dtk.split('.'))
print("-- DTK:", dtk)
das_version += ".dtk" +dtk
#return _make_version_file(version, das_version, sha, abi, dtk, torch_version, branch)
return _update_hcu_version(version, das_version, sha, abi, dtk, torch_version, branch)
# Copyright (c) OpenMMLab. All rights reserved. # Copyright (c) OpenMMLab. All rights reserved.
__version__ = '2.2.0' __version__ = '2.2.0'
__hcu_version__ = '2.2.0'
def parse_version_info(version_str: str, length: int = 4) -> tuple: def parse_version_info(version_str: str, length: int = 4) -> tuple:
...@@ -32,4 +33,4 @@ def parse_version_info(version_str: str, length: int = 4) -> tuple: ...@@ -32,4 +33,4 @@ def parse_version_info(version_str: str, length: int = 4) -> tuple:
version_info = tuple(int(x) for x in __version__.split('.')[:3]) version_info = tuple(int(x) for x in __version__.split('.')[:3])
__all__ = ['__version__', 'version_info', 'parse_version_info'] __all__ = ['__version__', '__hcu_version__', 'version_info', 'parse_version_info']
...@@ -4,6 +4,7 @@ import platform ...@@ -4,6 +4,7 @@ import platform
import re import re
from pkg_resources import DistributionNotFound, get_distribution, parse_version from pkg_resources import DistributionNotFound, get_distribution, parse_version
from setuptools import find_packages, setup from setuptools import find_packages, setup
from get_version import get_version
EXT_TYPE = '' EXT_TYPE = ''
try: try:
...@@ -36,11 +37,11 @@ def choose_requirement(primary, secondary): ...@@ -36,11 +37,11 @@ def choose_requirement(primary, secondary):
return str(primary) return str(primary)
def get_version(): #def get_version():
version_file = 'mmcv/version.py' # version_file = 'mmcv/version.py'
with open(version_file, encoding='utf-8') as f: # with open(version_file, encoding='utf-8') as f:
exec(compile(f.read(), version_file, 'exec')) # exec(compile(f.read(), version_file, 'exec'))
return locals()['__version__'] # return locals()['__version__']
def parse_requirements(fname='requirements/runtime.txt', with_version=True): def parse_requirements(fname='requirements/runtime.txt', with_version=True):
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment