mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-10 21:28:32 +09:00
66 lines
2.2 KiB
Python
66 lines
2.2 KiB
Python
#!/usr/bin/env python3
|
|
import argparse
|
|
import subprocess
|
|
from pathlib import Path
|
|
|
|
|
|
REMOTE_ROOT = "/sdcard/FCL/mobilegl-trace"
|
|
SCRIPT_DIR = Path(__file__).resolve().parent
|
|
DEFAULT_WRAPPER = SCRIPT_DIR / "out" / "egltrace.so"
|
|
|
|
|
|
def adb(serial, args):
|
|
cmd = ["adb"]
|
|
if serial:
|
|
cmd += ["-s", serial]
|
|
cmd += args
|
|
print("+", " ".join(cmd), flush=True)
|
|
subprocess.run(cmd, check=True)
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--serial")
|
|
sub = parser.add_subparsers(dest="command", required=True)
|
|
|
|
install = sub.add_parser("install-wrapper")
|
|
install.add_argument("--wrapper", default=str(DEFAULT_WRAPPER))
|
|
|
|
sub.add_parser("enable")
|
|
sub.add_parser("disable")
|
|
sub.add_parser("capture-once")
|
|
|
|
pull = sub.add_parser("pull-latest")
|
|
pull.add_argument("--output", default=".trace-work/pulled-mobilegl-captures")
|
|
|
|
args = parser.parse_args()
|
|
serial = args.serial
|
|
|
|
if args.command == "install-wrapper":
|
|
wrapper = Path(args.wrapper)
|
|
if not wrapper.exists():
|
|
raise SystemExit(f"missing wrapper: {wrapper}")
|
|
adb(serial, ["shell", "mkdir", "-p", REMOTE_ROOT])
|
|
adb(serial, ["push", str(wrapper), f"{REMOTE_ROOT}/egltrace.so"])
|
|
elif args.command == "enable":
|
|
adb(serial, ["shell", "mkdir", "-p", REMOTE_ROOT])
|
|
adb(serial, ["shell", f"printf enabled > {REMOTE_ROOT}/enable"])
|
|
elif args.command == "disable":
|
|
adb(serial, ["shell", "rm", "-f", f"{REMOTE_ROOT}/enable"])
|
|
elif args.command == "capture-once":
|
|
adb(serial, ["shell", "mkdir", "-p", REMOTE_ROOT])
|
|
adb(serial, ["shell", f"date +%s%3N > {REMOTE_ROOT}/capture-once.request"])
|
|
elif args.command == "pull-latest":
|
|
tmp = subprocess.check_output((["adb"] + (["-s", serial] if serial else []) +
|
|
["shell", "cat", f"{REMOTE_ROOT}/latest-session.txt"]),
|
|
text=True, encoding="utf-8", errors="replace").strip()
|
|
if not tmp:
|
|
raise SystemExit("no latest-session.txt on device")
|
|
output = Path(args.output)
|
|
output.mkdir(parents=True, exist_ok=True)
|
|
adb(serial, ["pull", tmp, str(output / Path(tmp).name)])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|