-
Notifications
You must be signed in to change notification settings - Fork 52
Description
Summary
pip install (and pip install -e .) fails on systems that have Command Line Tools installed but not the full Xcode.app. The build backend explicitly rejects Command Line Tools and requires xcodebuild, but the actual build only uses swift build via Swift Package Manager — which works fine with just Command Line Tools.
Environment
- macOS 26.3 (Tahoe), Apple M3 Max
- Swift 6.2.3 (from Command Line Tools)
xcode-select -p→/Library/Developer/CommandLineTools- Xcode.app not installed
Error
Running pip install -e . produces:
SwiftToolingError: The active developer directory is set to Command Line Tools
(/Library/Developer/CommandLineTools), but a full Xcode installation is required.
Please install Xcode. Then open Xcode at least once to accept the license agreement
and install the Swift SDKs.
Root Cause
In build_backend.py, _build_c_bindings() performs three checks that require Xcode.app:
xcode-select -ppath check — rejects if path containsCommandLineToolsxcodebuildexistence check —xcodebuildbinary exists in PATH but fails with:"tool 'xcodebuild' requires Xcode, but active developer directory is a command line tools instance"xcodebuild -versionparse — requires Xcode version >= 26.0
However, the actual compilation (lines 74-81) only uses:
subprocess.run(["swift", "build", "-c", swift_build_config], ...)This is a pure Swift Package Manager build — it does not invoke xcodebuild at all. The Swift toolchain from Command Line Tools is sufficient.
Workaround
Removing the Xcode checks from build_backend.py (lines 71-131 in the original) allows the build to succeed:
# Replace the xcode-select + xcodebuild checks with just:
# (swift is already checked above)After this change, pip install -e . completes successfully and the SDK works correctly (text generation, streaming, guided generation, tool calling all verified).
Suggested Fix
Either:
- Remove the Xcode.app requirement entirely, since
swift builddoesn't need it - Make it a warning instead of an error, so users with Command Line Tools can still proceed
- Check for Swift SDK availability directly (e.g.,
swift sdk listor check for the macOS SDK) rather than using Xcode.app as a proxy
The macOS version check and swift executable check should remain — those are genuine requirements.