apple / apple/python-apple-fm-sdk

Build fails with Command Line Tools only — Xcode.app should not be required

Open
#6 2 comments 3 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
1.2k
Forks
74
PR merge metrics
No merged PRs in 30d

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`](https://github.com/apple/python-apple-fm-sdk/blob/main/build_backend.py), `_build_c_bindings()` performs three checks that require Xcode.app:

1. **`xcode-select -p` path check** — rejects if path contains `CommandLineTools`
2. **`xcodebuild` existence check** — `xcodebuild` binary exists in PATH but fails with: `"tool 'xcodebuild' requires Xcode, but active developer directory is a command line tools instance"`
3. **`xcodebuild -version` parse** — requires Xcode version >= 26.0

However, the actual compilation (lines 74-81) only uses:
```python
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:

```python
# 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 build` doesn'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 list` or 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.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.