vllm-project/vllm · error · RuntimeError

Failed to find the repaired NIXL wheel.

Error message

Failed to find the repaired NIXL wheel.

What it means

After `auditwheel repair --wheel-dir=WHEELS_CACHE_HOME` runs on the unrepaired NIXL wheel, the script searches WHEELS_CACHE_HOME for the repaired nixl wheel. This RuntimeError means the repaired wheel could not be found there — auditwheel failed, was not installed, or did not emit a matching artifact.

Source

Thrown at tools/install_nixl_from_source_ubuntu.py:221

    # We tell auditwheel to ignore the plugin that mesonpy already handled.
    auditwheel_command = [
        "auditwheel",
        "repair",
        "--exclude",
        "libplugin_UCX.so",  # <-- Exclude because mesonpy already includes it
        unrepaired_wheel,
        f"--wheel-dir={WHEELS_CACHE_HOME}",
    ]
    run_command(auditwheel_command, env=build_env)

    # --- CLEANUP ---
    # No more temporary files to remove, just the temp wheelhouse
    run_command(["rm", "-rf", temp_wheel_dir])
    # --- END CLEANUP ---

    newly_built_wheel = find_nixl_wheel_in_cache(WHEELS_CACHE_HOME)
    if not newly_built_wheel:
        raise RuntimeError("Failed to find the repaired NIXL wheel.")

    print(
        f"--> Successfully built self-contained wheel: \
            {os.path.basename(newly_built_wheel)}. Now installing...",
        flush=True,
    )
    install_command = [
        sys.executable,
        "-m",
        "pip",
        "install",
        "--no-deps",  # w/o "no-deps", it will install cuda-torch
        newly_built_wheel,
    ]
    if args.force_reinstall:
        install_command.insert(-1, "--force-reinstall")

    run_command(install_command)

View on GitHub (pinned to c794754062)

Solutions

  1. Install repair deps: `uv pip install auditwheel` and `apt install -y patchelf`, then re-run.
  2. Inspect the auditwheel output directly above the traceback — fix the reported unresolved library or policy error.
  3. Ensure WHEELS_CACHE_HOME is writable and clear stale entries, then re-run the installer (it caches, so leftover bad artifacts can confuse the lookup).

Example fix

# before
python tools/install_nixl_from_source_ubuntu.py
# -> RuntimeError: Failed to find the repaired NIXL wheel.

# after
uv pip install auditwheel && sudo apt install -y patchelf
python tools/install_nixl_from_source_ubuntu.py
Defensive patterns

Strategy: try-catch

Validate before calling

import shutil
missing = [t for t in ("auditwheel", "patchelf") if shutil.which(t) is None]
if missing:
    raise SystemExit(f"Install {missing} before repairing NIXL wheels")

Try / catch

try:
    subprocess.run(["auditwheel", "repair", wheel, f"--wheel-dir={cache}"], check=True)
except subprocess.CalledProcessError as e:
    raise SystemExit(f"auditwheel repair failed: {e}; check patchelf presence and unresolved libs")

Prevention

When it happens

Trigger: auditwheel not on PATH or erroring during `repair` (missing patchelf, unresolved external libs outside its policy) so nothing lands in WHEELS_CACHE_HOME; an auditwheel version that renames the output (e.g. manylinux tag differs) so the pattern match fails; a stale/permission-restricted cache directory.

Common situations: Running the installer without `pip install auditwheel patchelf`; SELinux or read-only HOME preventing writes to the wheel cache; auditwheel rejecting UCX-linked libraries.

Related errors


AI-assisted analysis of vllm-project/vllm@c794754062 (2026-08-14). Data as JSON: /api/errors/fe5fc1a87c392e38. Report an issue: GitHub.