Why not cc me or even send this re: to the original thread?


On 10/20/2015 6:32 AM, Juan Ramón Molina Menor wrote:
Hi!

I’m certainly doing it wrong, because CCACHE does not kick in after
applying the patch and modifying make.conf. CCACHE stats ('ccache -z'
followed by 'ccache -s') remain at zero during buildworld while they
used to reflect the cache miss/hits before.

# cat /etc/make.conf
WITH_CCACHE_BUILD=

 # svn diff /usr/src/share/mk/local.init.mk
Index: /usr/src/share/mk/local.init.mk
===================================================================
--- /usr/src/share/mk/local.init.mk     (revision 289627)
+++ /usr/src/share/mk/local.init.mk     (working copy)
@@ -38,3 +38,37 @@
 HOST_CFLAGS+= -DHOSTPROG
 CFLAGS+= ${HOST_CFLAGS}
 .endif
+
+# Handle ccache after CC is determined.  If CC is at some specific path
then
+# we must prepend the ccache wrapper.  Otherwise we can just prepend
PATH with
+# the wrapper location, which is a more safe solution since it avoids
spaces
+# and compiler type guessing based on filename.
+LOCALBASE?=            /usr/local
+CCACHE_WRAPPER_PATH?=  ${LOCALBASE}/libexec/ccache
+CCACHE_PATH?=          ${LOCALBASE}/bin/ccache
+.if defined(WITH_CCACHE_BUILD) && !defined(NOCCACHE) && \
+    ${CC:M*ccache*} == "" && exists(${CCACHE_PATH})
+# Handle compiler changes properly.  This avoids needing to use the
'world'
+# wrappers.
+CCACHE_COMPILERCHECK?= content
+.export CCACHE_COMPILERCHECK
+.if ${CC:M/*} == ""
+# Can use PATH.
+PATH:= ${CCACHE_WRAPPER_PATH}:${PATH}
+.export PATH
+.else
+# Must prepend CC.
+CC:=           ${CCACHE_PATH} ${CC}
+CXX:=          ${CCACHE_PATH} ${CXX}
+CPP:=          ${CCACHE_PATH} ${CPP}
+.if defined(HOST_CC)
+HOST_CC:=      ${CCACHE_PATH} ${HOST_CC}
+.endif
+.if defined(HOST_CXX)
+HOST_CXX:=     ${CCACHE_PATH} ${HOST_CXX}
+.endif
+.if defined(HOST_CPP)
+HOST_CPP:=     ${CCACHE_PATH} ${HOST_CPP}
+.endif
+.endif
+.endif # WITH_CCACHE_BUILD

If I recover the old make.conf, CCACHE works again for a buildworld.

# cat /etc/make.conf.old
.if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*))
.if !defined(NOCCACHE) && exists(/usr/local/libexec/ccache/world/cc)
CC:=${CC:C,^cc,/usr/local/libexec/ccache/world/cc,1}
CXX:=${CXX:C,^c\+\+,/usr/local/libexec/ccache/world/c++,1}
.endif
.endif

Maybe I misconfigured CCACHE when I first installed it?


This doesn't check for a value of WITH_CCACHE_BUILD, just being defined
is enough.

I've been fixing some subtle bugs such as in the lib32 build, but
overall I've had ccache -s growing while using the patch.  If you
already have ccache in CC it won't apply it.

Are you building head from head or some other configuration?

HEAD from HEAD, updated regularly in /usr/src with SVN. Following the standard procedure for updating described in /usr/src/UPDATING. ccache installed as explained by the package message. Nothing special, really.

I’ll take some time when possible to recheck all the settings and be back to you.

Best regards,
Juan
_______________________________________________
freebsd-current@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to