apple / apple/python-apple-fm-sdk

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

Aperta Adatta ai principianti
#6 2 commenti 3 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Python
Stelle
1.2k
Fork
74
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

## 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.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia in build_backend.py, in particolare con _build_c_bindings() e i controlli di Xcode descritti intorno alle righe 71-131; confrontali con l’invocazione di swift build intorno alle righe 74-81. Verifica la build usando solo Command Line Tools tramite pip install e pip install -e ., e conferma che i requisiti di macOS e Swift continuino a fallire correttamente mentre la build supportata abbia esito positivo.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python, swift
Ambito
build-system
Tipo di issue
Bug
Difficoltà
2/5
Tempo stimato
1-3 ore
Stato di attività
Tranquilla
Chiarezza
Specificata chiaramente
Idoneità per principianti
72/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.