mirror of
https://github.com/kvcache-ai/sglang.git
synced 2026-06-30 19:57:52 +00:00
144 lines
3.9 KiB
Python
Executable File
144 lines
3.9 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Bump sglang-kernel version in SGLang files to match the version in sgl-kernel/pyproject.toml.
|
|
Updates:
|
|
- python/pyproject.toml
|
|
- python/sglang/srt/entrypoints/engine.py
|
|
- docker/Dockerfile
|
|
"""
|
|
|
|
import re
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
try:
|
|
import tomllib # Python 3.11+
|
|
except ImportError:
|
|
import tomli as tomllib # Fallback for older Python versions
|
|
|
|
|
|
def get_kernel_version_from_source() -> str:
|
|
"""Extract version from sgl-kernel/pyproject.toml"""
|
|
pyproject_path = Path("sgl-kernel/pyproject.toml")
|
|
|
|
if not pyproject_path.exists():
|
|
print(f"Error: {pyproject_path} not found")
|
|
sys.exit(1)
|
|
|
|
with open(pyproject_path, "rb") as f:
|
|
data = tomllib.load(f)
|
|
|
|
version = data.get("project", {}).get("version")
|
|
if not version:
|
|
print("Error: Could not find version in sgl-kernel/pyproject.toml")
|
|
sys.exit(1)
|
|
|
|
return version
|
|
|
|
|
|
def update_python_pyproject(new_version: str) -> bool:
|
|
"""Update sglang-kernel version in python/pyproject.toml"""
|
|
pyproject_path = Path("python/pyproject.toml")
|
|
|
|
if not pyproject_path.exists():
|
|
print(f"Error: {pyproject_path} not found")
|
|
sys.exit(1)
|
|
|
|
content = pyproject_path.read_text()
|
|
|
|
# Replace "sglang-kernel==x.x.x" with new version
|
|
new_content = re.sub(
|
|
r'"sglang-kernel==[^"]+"',
|
|
f'"sglang-kernel=={new_version}"',
|
|
content,
|
|
)
|
|
|
|
if content == new_content:
|
|
print("No changes needed in python/pyproject.toml")
|
|
return False
|
|
|
|
pyproject_path.write_text(new_content)
|
|
print(f"✓ Updated python/pyproject.toml to version {new_version}")
|
|
return True
|
|
|
|
|
|
def update_engine_py(new_version: str) -> bool:
|
|
"""Update sglang-kernel version in python/sglang/srt/entrypoints/engine.py"""
|
|
engine_path = Path("python/sglang/srt/entrypoints/engine.py")
|
|
|
|
if not engine_path.exists():
|
|
print(f"Error: {engine_path} not found")
|
|
sys.exit(1)
|
|
|
|
content = engine_path.read_text()
|
|
|
|
# Replace version in assert_pkg_version("sglang-kernel", "version", ...)
|
|
new_content = re.sub(
|
|
r'(assert_pkg_version\s*\(\s*"sglang-kernel"\s*,\s*)"[^"]+"',
|
|
rf'\1"{new_version}"',
|
|
content,
|
|
)
|
|
|
|
if content == new_content:
|
|
print("No changes needed in engine.py")
|
|
return False
|
|
|
|
engine_path.write_text(new_content)
|
|
print(f"✓ Updated engine.py to version {new_version}")
|
|
return True
|
|
|
|
|
|
def update_dockerfile(new_version: str) -> bool:
|
|
"""Update SGL_KERNEL_VERSION in docker/Dockerfile"""
|
|
dockerfile_path = Path("docker/Dockerfile")
|
|
|
|
if not dockerfile_path.exists():
|
|
print(f"Error: {dockerfile_path} not found")
|
|
sys.exit(1)
|
|
|
|
content = dockerfile_path.read_text()
|
|
|
|
# Replace ARG SGL_KERNEL_VERSION=x.x.x with new version
|
|
new_content = re.sub(
|
|
r"^(ARG\s+SGL_KERNEL_VERSION=)(.+)$",
|
|
rf"\g<1>{new_version}",
|
|
content,
|
|
flags=re.MULTILINE,
|
|
)
|
|
|
|
if content == new_content:
|
|
print("No changes needed in Dockerfile")
|
|
return False
|
|
|
|
dockerfile_path.write_text(new_content)
|
|
print(f"✓ Updated Dockerfile to version {new_version}")
|
|
return True
|
|
|
|
|
|
def main():
|
|
kernel_version = get_kernel_version_from_source()
|
|
print(f"Bumping sglang-kernel version to: {kernel_version}\n")
|
|
|
|
updated_files = []
|
|
|
|
if update_python_pyproject(kernel_version):
|
|
updated_files.append("python/pyproject.toml")
|
|
|
|
if update_engine_py(kernel_version):
|
|
updated_files.append("python/sglang/srt/entrypoints/engine.py")
|
|
|
|
if update_dockerfile(kernel_version):
|
|
updated_files.append("docker/Dockerfile")
|
|
|
|
print()
|
|
if updated_files:
|
|
print(f"✓ Successfully updated {len(updated_files)} file(s):")
|
|
for file in updated_files:
|
|
print(f" - {file}")
|
|
else:
|
|
print("✓ All files already have the correct version")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|