diff options
authorRobert Yang <>2018-12-17 14:30:27 +0800
committerRichard Purdie <>2019-01-14 11:21:57 +0000
commit2abbc4d0cd571e82ed6188d3b2d84b4cd6be25e8 (patch)
parent36cead66fbadd8c3827aec4b67ea124ee3c2ff94 (diff)
ccache.bbclass: Set CCACHE_CONFIGPATH to fix race issues
Fixed race issues when parallel build: ccache: error: /path/to/ccache/i586-poky-linux/mmc-utils/ccache.conf: No such file or directory ccache: error: /path/to/ccache/i586-poky-linux/mmc-utils/ccache.conf: No such file or directory This is because we set CCACHE_DIR for earch recipe, and ccache will create a ccache.conf for each CCACHE_DIR when CCACHE_CONFIGPATH is not set, but there might be a race issue in parallel build: ccache gcc file1.c ccache gcc file2.c If the two ccache processes use fopen(path, "w") to create ccache.conf at the same time, the error would happen. Set CCACHE_CONFIGPATH to meta/conf/ccache.conf can fix the problem, and we can add other configs to the file when needed. And also set cache_dir_levels to 1 (default is 2) since each recipe has a cache dir, thus we don't have too many files in one dir. Signed-off-by: Robert Yang <>
2 files changed, 4 insertions, 0 deletions
diff --git a/meta/classes/ccache.bbclass b/meta/classes/ccache.bbclass
index fb3fbdf25c..b5457359ca 100644
--- a/meta/classes/ccache.bbclass
+++ b/meta/classes/ccache.bbclass
@@ -29,6 +29,8 @@ export CCACHE_BASEDIR ?= "${TMPDIR}"
# Used for sharing cache files after compiler is rebuilt
export CCACHE_COMPILERCHECK ?= "%compiler% -dumpspecs"
+export CCACHE_CONFIGPATH ?= "${COREBASE}/meta/conf/ccache.conf"
# We need to stop ccache considering the current directory or the
diff --git a/meta/conf/ccache.conf b/meta/conf/ccache.conf
new file mode 100644
index 0000000000..931012dec9
--- /dev/null
+++ b/meta/conf/ccache.conf
@@ -0,0 +1,2 @@
+max_size = 0
+cache_dir_levels = 1