ccache: change default cache directory path to match config setting
PATCH v3 1/2 ccache: change default cache directory path to match config setting
Commit 433290761fceb476b095548eec10adf72405e050 changed the hard-coded ccache directory location to use BR_CACHE_DIR (then BUILDROOT_CACHE_DIR), which is exported by Makefile based on the BR2_CCACHE_DIR config option. This allowed the cache location to be changed on-the-fly by setting a "make" command line variable, but left the default location of ccache's normal default at "$HOME/.ccache". Since this location does not match the default for BR2_CCACHE_DIR, it is basically almost never correct, so direct invocation of ccache outside of the buildroot Makefile, such as for increasing the cache size, becomes cumbersome.
This patch changes the last-ditch cache location from "$HOME/.ccache" to the BR_CCACHE_DIR value defined when host-ccache is configured. Note that the ability to later override the cache location by using a BR_CACHE_DIR command line variable is left intact.
---
Changes v2 -> v3:
* n/a
Changes v1 -> v2:
* Refresh against latest, rather than building on top of unrelated WIP patch.
* Update patch commit log wording.
--- package/ccache/ccache.mk | 3 +++ 1 file changed, 3 insertions(+)
package/ccache/ccache.mk +3 -0
@@ -30,9 +30,12 @@ HOST_CCACHE_CONF_OPT += ccache_cv_zlib_1_2_3=no # the compiler, because in the context of Buildroot, that completely # defeats the purpose of ccache. Of course, that leaves the user # responsible for purging its cache when the compiler changes. +# - Change hard-coded last-ditch default to match path in .config, to avoid +# the need to specify BR_CACHE_DIR when invoking ccache directly. define HOST_CCACHE_PATCH_CONFIGURATION sed -i 's,getenv("CCACHE_DIR"),getenv("BR_CACHE_DIR"),' $(@D)/ccache.c sed -i 's,getenv("CCACHE_COMPILERCHECK"),"none",' $(@D)/ccache.c + sed -i 's,"%s/.ccache","$(BR_CACHE_DIR)",' $(@D)/ccache.c endef HOST_CCACHE_POST_CONFIGURE_HOOKS += \
Signature · 1 line
1.7.9.5
PATCH v3 2/2 ccache: provide capability to do initial ccache setup
For example, if your project is known to require more space than the default max cache size, then you might want to increase the cache size to a suitable amount using the -M (--max-size) option.
The string you specify here is passed verbatim to ccache. Refer to ccache documentation for more details.
These initial settings are applied after ccache has been compiled.
---
Changes v2 -> v3:
* Change based on suggestions from Thomas De Schampheleire
* Config.in: use 'if BR2_CCACHE' around ccache options instead of individual 'depends on BR2_CCACHE' conditions
* Config.in: reword description of new otption
* ccache.mk: correct typo in variable name
* ccache.mk: adjust message text
Changes v1 -> v2:
* Refresh against latest
* Also, remove needless line-breaks in existing hooks
--- Config.in | 21 +++++++++++++++++++-- package/ccache/ccache.mk | 18 ++++++++++++++---- 2 files changed, 33 insertions(+), 6 deletions(-)
Config.in +19 -2
@@ -256,7 +256,7 @@ config BR2_CCACHE help This option will enable the use of ccache, a compiler cache. It will cache the result of previous builds to speed - up future builds. The cache is stored in + up future builds. By default, the cache is stored in $HOME/.buildroot-ccache. Note that Buildroot does not try to invalidate the cache
@@ -266,13 +266,30 @@ config BR2_CCACHE ccache cache by removing the $HOME/.buildroot-ccache directory. +if BR2_CCACHE + config BR2_CCACHE_DIR string "Compiler cache location" - depends on BR2_CCACHE default "$(HOME)/.buildroot-ccache" help Where ccache should store cached files. +config BR2_CCACHE_INITIAL_SETUP + string "Compiler cache initial setup" + help + Initial ccache settings to apply, such as --max-files or --max-size. + + For example, if your project is known to require more space than the + default max cache size, then you might want to increase the cache size + to a suitable amount using the -M (--max-size) option. + + The string you specify here is passed verbatim to ccache. Refer to + ccache documentation for more details. + + These initial settings are applied after ccache has been compiled. + +endif + config BR2_DEPRECATED bool "Show packages that are deprecated or obsolete" help
package/ccache/ccache.mk +14 -4
@@ -38,15 +38,25 @@ define HOST_CCACHE_PATCH_CONFIGURATION sed -i 's,"%s/.ccache","$(BR_CACHE_DIR)",' $(@D)/ccache.c endef -HOST_CCACHE_POST_CONFIGURE_HOOKS += \ - HOST_CCACHE_PATCH_CONFIGURATION +HOST_CCACHE_POST_CONFIGURE_HOOKS += HOST_CCACHE_PATCH_CONFIGURATION define HOST_CCACHE_MAKE_CACHE_DIR mkdir -p $(BR_CACHE_DIR) endef -HOST_CCACHE_POST_INSTALL_HOOKS += \ - HOST_CCACHE_MAKE_CACHE_DIR +HOST_CCACHE_POST_INSTALL_HOOKS += HOST_CCACHE_MAKE_CACHE_DIR + +# Provide capability to do initial ccache setup (e.g. increase default size) +BR_CCACHE_INITIAL_SETUP = $(call qstrip,$(BR2_CCACHE_INITIAL_SETUP)) +ifneq ($(BR_CCACHE_INITIAL_SETUP),) +define HOST_CCACHE_DO_INITIAL_SETUP + @$(call MESSAGE,"Applying initial settings") + $(CCACHE) $(BR_CCACHE_INITIAL_SETUP) + $(CCACHE) -s +endef + +HOST_CCACHE_POST_INSTALL_HOOKS += HOST_CCACHE_DO_INITIAL_SETUP +endif $(eval $(host-autotools-package))
Signature · 1 line
1.7.9.5
PATCH v3 2/2 ccache: provide capability to do initial ccache setup
Quoted 11 lines · Danomi Manchego
For example, if your project is known to require more space than the default max cache size, then you might want to increase the cache size to a suitable amount using the -M (--max-size) option.
The string you specify here is passed verbatim to ccache. Refer to ccache documentation for more details.
These initial settings are applied after ccache has been compiled.
Signed-off-by Danomi Manchego <[email protected]>
Thomas Petazzoni
AppliedPATCH v3 2/2 ccache: provide capability to do initial ccache setup
In reply to Danomi ManchegoDear Danomi Manchego,
Quoted 10 lines · Danomi Manchego
For example, if your project is known to require more space than the default max cache size, then you might want to increase the cache size to a suitable amount using the -M (--max-size) option.
The string you specify here is passed verbatim to ccache. Refer to ccache documentation for more details.
These initial settings are applied after ccache has been compiled.
Signed-off-by Danomi Manchego <[email protected]>
Applied, thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v3 1/2 ccache: change default cache directory path to match config setting
In reply to Danomi ManchegoDanomi Manchego <[email protected]> schreef:
Quoted 10 lines
Commit
433290761fceb476b095548eec10adf72405e050changed the hard-coded ccache directory location to useBR_CACHE_DIR(thenBUILDROOT_CACHE_DIR), which is exported byMakefilebased on theBR2_CCACHE_DIRconfig option. This allowed the cache location to be changed on-the-fly by setting a "make" command line variable, but left the default location of ccache's normal default at "$HOME/.ccache". Since this location does not match the default forBR2_CCACHE_DIR, it is basically almost never correct, so direct invocation of ccache outside of the buildrootMakefile, such as for increasing the cache size, becomes cumbersome.
Quoted 6 lines
This patch changes the last-ditch cache location from "$HOME/.ccache" to the
BR_CCACHE_DIRvalue defined when host-ccache is configured. Note that the ability to later override the cache location by using aBR_CACHE_DIRcommand line variable is left intact.Signed-off-by Danomi Manchego <[email protected]>
You should have pasted my review and test tags here...
PATCH v3 1/2 ccache: change default cache directory path to match config setting
Thomas,
Quoted 4 lines · Thomas De Schampheleire
You should have pasted my review and test tags here...
Reviewed-by Thomas De Schampheleire <[email protected]>
Such tags survive the rev process? In this case, this patch didn't change from v2 to v3, but in general, I thought it might be disingenuous to claim those fields on rev X, when they were granted on rev X-n ...
PATCH v3 1/2 ccache: change default cache directory path to match config setting
Danomi Manchego <[email protected]> schreef:
Quoted 6 lines
Thomas,
Quoted 2 lines · Thomas De Schampheleire
You should have pasted my review and test tags here...
Quoted 7 lines
Quoted 2 lines
Reviewed-by Thomas De Schampheleire <[email protected]>Such tags survive the rev process? In this case, this patch didn't change from v2 to v3, but in general, I thought it might be disingenuous to claim those fields on rev X, when they were granted on rev X-n ...
They only survive on unchanged revisions, which was the case on this first patch. Indeed for changed revisions, like the second patch, any tag should not be copy pasted as the content is different.
Best regards,
Thomas
Thomas Petazzoni
AppliedPATCH v3 1/2 ccache: change default cache directory path to match config setting
In reply to Danomi ManchegoDear Danomi Manchego,
Quoted 10 lines · Danomi Manchego
Commit
433290761fceb476b095548eec10adf72405e050changed the hard-coded ccache directory location to useBR_CACHE_DIR(thenBUILDROOT_CACHE_DIR), which is exported byMakefilebased on theBR2_CCACHE_DIRconfig option. This allowed the cache location to be changed on-the-fly by setting a "make" command line variable, but left the default location of ccache's normal default at "$HOME/.ccache". Since this location does not match the default forBR2_CCACHE_DIR, it is basically almost never correct, so direct invocation of ccache outside of the buildrootMakefile, such as for increasing the cache size, becomes cumbersome.
Quoted 6 lines
This patch changes the last-ditch cache location from "$HOME/.ccache" to the
BR_CCACHE_DIRvalue defined when host-ccache is configured. Note that the ability to later override the cache location by using aBR_CACHE_DIRcommand line variable is left intact.Signed-off-by Danomi Manchego <[email protected]>
Applied, thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com