Bug 1380964 - Get and upload useful sccache logs. r?gps draft
authorMike Hommey <mh+mozilla@glandium.org>
Fri, 14 Jul 2017 09:46:38 +0900
changeset 608952 29ec05f2fd6902433c7e591197ffca5c364c8c3c
parent 608677 627a72c250a746e081ff95368882548a2c6908e3
child 637460 41d6f8b15520ca7f344680133ef565c59d2d4180
push id68456
push userbmo:mh+mozilla@glandium.org
push dateFri, 14 Jul 2017 10:41:26 +0000
reviewersgps
bugs1380964, 1005495
milestone56.0a1
Bug 1380964 - Get and upload useful sccache logs. r?gps When investigating why a particular build got a particularly high number of cache misses, it is useful to know exactly *what* had cache misses, and you can't get the missing information after the fact. We used to have some stats stored in a log file uploaded as artifact with the old python sccache per bug 1005495 (and before that inline in the build log), and we actually still have remains of that in the form of a EXTRA_UPLOAD_FILES in build/mozconfig.cache. Let's reuse that, and get some useful logs from sccache. Ideally sccache would give better logs, but those are sufficient for now. We'll figure things out eventually. https://github.com/mozilla/sccache/issues/151
Makefile.in
build/sccache.mk
--- a/Makefile.in
+++ b/Makefile.in
@@ -243,16 +243,19 @@ default all::
 include $(topsrcdir)/config/rules.mk
 
 ifdef SCCACHE_VERBOSE_STATS
 default::
 	-$(CCACHE) --show-stats --stats-format=json > sccache-stats.json
 	@echo "===SCCACHE STATS==="
 	-$(CCACHE) --show-stats
 	@echo "==================="
+# Ideally we'd do that in the same file as we set the sccache.log location for
+# sccache, but it's too late in the build.
+	-gzip -9 $(DIST)/sccache.log
 endif
 
 distclean::
 	$(RM) $(DIST_GARBAGE)
 
 ifdef MOZ_CRASHREPORTER
 include $(topsrcdir)/toolkit/mozapps/installer/package-name.mk
 
--- a/build/sccache.mk
+++ b/build/sccache.mk
@@ -10,13 +10,13 @@ BASE_DIR = $(MOZ_OBJDIR)/$(firstword $(M
 endif
 
 preflight_all:
 	# Terminate any sccache server that might still be around
 	-$(TOPSRCDIR)/sccache2/sccache --stop-server > /dev/null 2>&1
 	# Start a new server, ensuring it gets the jobserver file descriptors
 	# from make (but don't use the + prefix when make -n is used, so that
 	# the command doesn't run in that case)
-	$(if $(findstring n,$(filter-out --%, $(MAKEFLAGS))),,+)$(TOPSRCDIR)/sccache2/sccache --start-server
+	$(if $(findstring n,$(filter-out --%, $(MAKEFLAGS))),,+)env RUST_LOG=sccache::compiler=debug SCCACHE_ERROR_LOG=$(OBJDIR)/dist/sccache.log $(TOPSRCDIR)/sccache2/sccache --start-server
 
 postflight_all:
 	# Terminate sccache server. This prints sccache stats.
 	-$(TOPSRCDIR)/sccache2/sccache --stop-server