One package that makes the POSIX assumptions measured in W0-W8 hold in every process vLLM / vLLM-Omni starts, and reports what it did: - provides fcntl (flock/lockf on msvcrt.locking; LOCK_SH served as exclusive) and uvloop (asyncio.run on a selector loop) when absent; - installs WindowsSelectorEventLoopPolicy and a signal.signal fallback for loop.add_signal_handler on the Windows loop classes; - replaces whole vLLM's get_open_zmq_ipc_path / find_loaded_library when the wheel lacks the branch patch and the upstream body hash is known; - verifies the wheel-only sites (sentinel poll, int64 seed) and reports wheel_required at the exact site instead of failing downstream; - shm_dir() replaces the /dev/shm literals; os.geteuid provided. Activated from vllm_omni/patch.py and as vllm.general_plugins / vllm_omni.general_plugins entry points (idempotent; no-op off Windows). prints the audit; the M0 placement report embeds it. 16 Linux tests through injected primitives. Design: analysis/design_windows_compat_plugin_20260921.md Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
# SPDX-License-Identifier: Apache-2.0
|
|
# SPDX-FileCopyrightText: Copyright contributors to the vLLM-Omni project
|
|
"""``python -m vllm_omni.windows report`` -- print the audit as JSON (exit 1 if a wheel site is missing)."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
import json
|
|
import sys
|
|
|
|
|
|
def main(argv: list[str] | None = None) -> int:
|
|
ap = argparse.ArgumentParser(prog="python -m vllm_omni.windows")
|
|
ap.add_argument("command", choices=["report"], nargs="?", default="report")
|
|
ap.add_argument("--json", dest="json_path", help="also write the report here")
|
|
args = ap.parse_args(argv)
|
|
|
|
from vllm_omni.windows import activate, report
|
|
|
|
activate()
|
|
rep = report()
|
|
text = json.dumps(rep, indent=2, default=str)
|
|
print(text)
|
|
if args.json_path:
|
|
with open(args.json_path, "w", encoding="utf-8") as fh:
|
|
fh.write(text + "\n")
|
|
sites = (rep.get("vllm") or {}).get("wheel_sites") or {}
|
|
missing = sorted(k for k, v in sites.items() if v in ("wheel_required", "unknown_upstream"))
|
|
if missing:
|
|
print(f"wheel_required: {', '.join(missing)}", file=sys.stderr)
|
|
return 1
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|