Repository navigation
Conversation
Directly using Runtime.exec breaks Gradle configuration caching. This change is to use `providers.exec` which supports configuration caching. This is a minimal fix; it's likely possible that more invasive changes could be useful to avoid having to exec these processes at all until their values are needed, but I have not looked into larger structural changes.
cortinico
approved these changes
Dec 12, 2023
Co-authored-by: Nicola Corti <corti.nico@gmail.com>
Collaborator
|
Hey @ahruss, mind looking why e2e tests are failing? |
thymikee
reviewed
Dec 12, 2023
| def readBuffer = new StringBuffer() | ||
| while ((buff = bufferedReader.readLine()) != null) { | ||
| readBuffer.append(buff) | ||
| def execOutput = providers.exec { |
Member
Contributor
Author
There was a problem hiding this comment.
ah - created the PR from the wrong branch, should be fixed with 33fa4a1
lukmccall
added a commit
to expo/expo
that referenced
this pull request
Feb 8, 2024
# Why Uses a cache-friendly method of executing external processes. The Gradle now has a new cache configuration setting which allows skipping the configuration step. However, the old `exec` API doesn't support running during the cacheable configuration phase. To fix this, new functions can be used. You can find more information on this topic here: https://docs.gradle.org/current/userguide/configuration_cache.html#config_cache:requirements:external_processes Just to let you know, this pull request is quite similar to the one that was submitted by the community CLI. You can find the link for it here: react-native-community/cli#2201 PR only affects `bare-expo` projects; I didn't modify our template or Expo Go since I'm still testing different approaches. >⚠️ At the moment, this PR doesn't support enabling the cache configuration. We still have a lot of work to do before we can achieve that goal. However, I was able to turn on the configuration cache by making a few changes and using some hacks. This resulted in a significant improvement in build time, reducing it by around 40%. # How Used new cache-friendly API to run external processes. # Test Plan - bare-expo ✅
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary:
Directly calling Runtime.exec breaks Gradle configuration caching. An easy workaround is to use
providers.execinstead, which supports configuration caching.Test Plan:
This change should be functionally equivalent to existing behavior. I've tested locally that my project's gradle build still works with this change, both with and without the --configuration-cache argument
Checklist