react / react/react-native

ccache isn't used by iOS builds because CCACHE_BINARY is missing

Abierto
#55,381 2 comentarios 5 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Needs: Triage :mag: Platform: iOS
Lenguaje dominante
C++
Estrellas
127k
Forks
25.3k
Merge medio
1 d 23 h
PR fusionados (30 d)
4

Descripción

Description

Even if ccache is enabled for iOS builds, it's never actually used. The issue seems to originate from this PR:
https://github.com/facebook/react-native/pull/48257

The CCACHE_BINARY user-defined setting was added to Xcode, which the shell scripts will try to use as an env var. However, none of the user-defined settings become an env var, therefore ccache is never invoked (as of Xcode 26.2).

You can test the env vars by adding the following line to ccache-clang.sh:

env > ~/ccache.log
Steps to reproduce
  1. Install ccache brew install ccache
  2. Zero the ccache stats ccache -z
  3. Check out the minimal repro project
  4. Set up iOS dependencies cd ios && bundle install && bundle exec pod install
  5. Build iOS using npm run ios or by opening the Xcode project

Expected outcome:
ccache is used and ccache -s contains stats

Actual outcome:
ccache is never called

React Native Version

0.83.1"

Affected Platforms

Runtime - iOS, Build - MacOS

Output of npx @react-native-community/cli info
info Fetching system and libraries information...
System:
  OS: macOS 26.2
  CPU: (14) arm64 Apple M4 Max
  Memory: 632.27 MB / 36.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 25.5.0
    path: /opt/homebrew/bin/node
  Yarn: Not Found
  npm:
    version: 11.8.0
    path: /opt/homebrew/bin/npm
  Watchman: Not Found
Managers:
  CocoaPods:
    version: 1.16.2
    path: /opt/homebrew/bin/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 25.2
      - iOS 26.2
      - macOS 26.2
      - tvOS 26.2
      - visionOS 26.2
      - watchOS 26.2
  Android SDK: Not Found
IDEs:
  Android Studio: 2025.1 AI-251.26094.121.2513.14007798
  Xcode:
    version: 26.2/17C52
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.17
    path: /usr/bin/javac
  Ruby:
    version: 4.0.1
    path: /opt/homebrew/opt/ruby/bin/ruby
npmPackages:
  "@react-native-community/cli":
    installed: 20.0.0
    wanted: 20.0.0
  react:
    installed: 19.2.0
    wanted: 19.2.0
  react-native:
    installed: 0.83.1
    wanted: 0.83.1
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: true
  newArchEnabled: true
Stacktrace or Logs
The ccache stats don't show any information other than size because it has never been hit:
Local storage:
  Cache size (GiB): 0.3 / 5.0 ( 5.80%)


Expected stats:

Cacheable calls:      0 /   1 ( 0.00%)
  Hits:               0
    Direct:           0
    Preprocessed:     0
  Misses:             0
Uncacheable calls:    1 /   1 (100.0%)
MANDATORY Reproducer

https://github.com/Nezz/react-native-repro/tree/repro/Ccache

Screenshots and Videos

No response

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con packages/react-native/scripts/xcode/ccache-clang.sh e inspecciona cómo se consume CCACHE_BINARY durante la compilación de iOS. Ejecuta el reproducer obligatorio, compila con npm run ios o Xcode y comprueba ccache -s; el trabajo está terminado cuando la compilación invoca ccache y las estadísticas muestran llamadas al compilador.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
ios, macos, react-native, shell
Área
build-system, mobile
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Tranquilo
Claridad
Bien especificado
Aptitud para principiantes
68/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.