apple / apple/python-apple-fm-sdk
Build fails with Command Line Tools only — Xcode.app should not be required
- 主要言語
- Python
- スター
- 1.2k
- フォーク
- 74
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
## 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.
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
調査の方向性
build_backend.py から始め、特に _build_c_bindings() と、71-131 行付近で説明されている Xcode チェックを確認します。それらを 74-81 行付近の swift build の呼び出しと比較します。pip install と pip install -e . のみを使用して Command Line Tools でビルドを検証し、macOS と Swift の要件が引き続き適切に失敗し、サポート対象のビルドが成功することを確認します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python, swift
- 領域
- build-system
- issue の種類
- バグ
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 活発さ
- 静か
- 明瞭さ
- 明確に書かれている
- 初心者へのやさしさ
- 72/100