ruff/scripts/pgo.py
FilipAndersson245 9ab5e06bcc Formated.
2025-04-22 16:41:27 +02:00

67 lines
1.6 KiB
Python

"""
Creates Profile-Guided-Optimized binaries for ruff.
Ensure `cargo-pgo` is installed and configured to run this code.
"""
import json
import os
import subprocess
from pathlib import Path
PROJECTS_JSON = "./scripts/pgo_profile.json"
CLONE_DIR = Path("clones")
TRIPLE = "x86_64-unknown-linux-gnu"
env = os.environ.copy()
env["LLVM_PROFILE_FILE"] = f"{os.getcwd()}/target/pgo-profiles/ruff_%m_%p.profraw"
def run_command(cmd, env, cwd=None, check=False):
print(f">>> {cmd}")
subprocess.run(
cmd,
shell=True,
check=check,
cwd=cwd,
env=env,
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
)
def main():
CLONE_DIR.mkdir(exist_ok=True)
with open(PROJECTS_JSON, "r") as f:
projects = json.load(f)
run_command("cargo pgo clean", env=env)
run_command("cargo pgo instrument build --keep-profiles -- -q", env=env)
for project in projects:
name = project["name"]
url = project["url"]
branch = project["branch"]
dest = CLONE_DIR / name
print(f">> collecting data on {name}.")
if not dest.exists():
run_command(
f"git clone --depth 1 --quiet --branch {branch} {url} {dest}", env=env
)
run_command(
f"../../target/{TRIPLE}/release/ruff check -n -e --diff .",
env=env,
cwd=dest,
)
run_command(
f"../../target/{TRIPLE}/release/ruff format -n --check .", env=env, cwd=dest
)
run_command("cargo pgo optimize", env=env)
if __name__ == "__main__":
main()