Remove our binary of ccache
Our binary was rather old, and for a variety of reasons we haven't kept it updated. We've been running into a handful of reliability issues that would have been fixed with an update, and a few reproducibility / correctness issues that may or may not be fixed with newer versions. For local no-change full rebuilds, ccache can still save ~35% of the build time (but adds a few minutes to initially populate the cache). But most local uses should be using incremental builds anyways, not clean rebuilds. Or you're doing builds of different configurations, which wouldn't be cache hits either, and would make your cache even larger. At a large scale, we haven't seen a significant performance difference between having ccache on or off. This may be different if you've got very good build locality, or a very large cache -- but if you've got good build locality, it's reasonable to do incremental builds (not for release builds, and while running `m installclean` in between builds). So for our cases, we'd prefer the stability and correctness of not using ccache, but if you still want to use ccache, continue setting USE_CCACHE and also set CCACHE_EXEC to the path of your ccache executable. Bug: 32748498 Bug: 72408185 Test: performance testing of USE_CCACHE=false vs true locally Test: turned off ccache for a collection of targets Test: CCACHE_EXEC=/usr/bin/ccache USE_CCACHE=true m Change-Id: I7117fe3107bd98521051ae343038a38f7e855502
This commit is contained in:
parent
a975fe9c24
commit
7556703f0d
|
@ -14,6 +14,21 @@
|
|||
# limitations under the License.
|
||||
#
|
||||
|
||||
# We no longer provide a ccache prebuilt.
|
||||
#
|
||||
# Ours was old, and had a number of issues that triggered non-reproducible
|
||||
# results and other failures. Newer ccache versions may fix some of those
|
||||
# issues, but at the large scale of our build servers, we weren't seeing
|
||||
# significant performance gains from using ccache -- you end up needing very
|
||||
# good locality and/or very large caches if you're building many different
|
||||
# configurations.
|
||||
#
|
||||
# Local no-change full rebuilds were showing better results, but why not just
|
||||
# use incremental builds at that point?
|
||||
#
|
||||
# So if you still want to use ccache, continue setting USE_CCACHE, but also set
|
||||
# the CCACHE_EXEC environment variable to the path to your ccache executable.
|
||||
ifneq ($(CCACHE_EXEC),)
|
||||
ifneq ($(filter-out false,$(USE_CCACHE)),)
|
||||
# The default check uses size and modification time, causing false misses
|
||||
# since the mtime depends when the repo was checked out
|
||||
|
@ -36,17 +51,11 @@ ifneq ($(filter-out false,$(USE_CCACHE)),)
|
|||
# See http://petereisentraut.blogspot.com/2011/09/ccache-and-clang-part-2.html
|
||||
export CCACHE_CPP2 := true
|
||||
|
||||
CCACHE_HOST_TAG := $(HOST_PREBUILT_TAG)
|
||||
ccache := prebuilts/misc/$(CCACHE_HOST_TAG)/ccache/ccache
|
||||
# Check that the executable is here.
|
||||
ccache := $(strip $(wildcard $(ccache)))
|
||||
ifdef ccache
|
||||
ifndef CC_WRAPPER
|
||||
CC_WRAPPER := $(ccache)
|
||||
CC_WRAPPER := $(CCACHE_EXEC)
|
||||
endif
|
||||
ifndef CXX_WRAPPER
|
||||
CXX_WRAPPER := $(ccache)
|
||||
endif
|
||||
ccache =
|
||||
CXX_WRAPPER := $(CCACHE_EXEC)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
|
Loading…
Reference in New Issue