mirror of
https://github.com/Lakr233/vphone-cli.git
synced 2026-09-02 02:34:29 +00:00
The unified tool provisions ~/.vphone/venv itself and never runs setup_venv.sh, so it lost that script's libkeystone handling. It pip-installs and then verifies with pythonIsUsable, which only probes ipsw_parser — a venv with keystone bindings and no native library passes, gets cached as good, and fails much later inside fw patch. That state is reachable and silent. PyPI has no arm64 macOS wheel (only macosx_10_14_x86_64), so pip builds keystone-engine from its sdist, and the sdist's darwin path ignores the build's exit status (subprocess.call plus a glob that matches nothing) — a failed native build still installs bindings alone and pip reports success. Probe that keystone can assemble rather than merely import, and on failure install a loadable dylib next to the bindings: copy one from Homebrew if the bottle ships it, else link one from libkeystone.a, matching setup_venv.sh. The managed venv is repaired in place before being rebuilt, since a missing dylib is not worth a full re-install. Verified: repairs a venv whose dylibs were removed, and recovers a fresh bootstrap that produced bindings-only (pip cache cleared, cmake off PATH) — pip exits 0, the guard catches it, the venv is accepted. Co-Authored-By: Claude Fable 5 <[email protected]>