diff options
author | Robert Yang <liezhi.yang@windriver.com> | 2018-12-17 14:30:27 +0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-01-14 11:35:55 +0000 |
commit | e96d0200ca3226a3127934ed29c202797d88e4c2 (patch) | |
tree | 963b5d0d5ca73dc3efba1f60faa88964318a8d75 /meta | |
parent | 7953d6a8bc4beffea7994d6e57f6a5e000ca1889 (diff) | |
download | poky-e96d0200ca3226a3127934ed29c202797d88e4c2.tar.gz |
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.
(From OE-Core rev: 2abbc4d0cd571e82ed6188d3b2d84b4cd6be25e8)
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/classes/ccache.bbclass | 2 | ||||
-rw-r--r-- | meta/conf/ccache.conf | 2 |
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}" | |||
29 | # Used for sharing cache files after compiler is rebuilt | 29 | # Used for sharing cache files after compiler is rebuilt |
30 | export CCACHE_COMPILERCHECK ?= "%compiler% -dumpspecs" | 30 | export CCACHE_COMPILERCHECK ?= "%compiler% -dumpspecs" |
31 | 31 | ||
32 | export CCACHE_CONFIGPATH ?= "${COREBASE}/meta/conf/ccache.conf" | ||
33 | |||
32 | export CCACHE_DIR ?= "${CCACHE_TOP_DIR}/${MULTIMACH_TARGET_SYS}/${PN}" | 34 | export CCACHE_DIR ?= "${CCACHE_TOP_DIR}/${MULTIMACH_TARGET_SYS}/${PN}" |
33 | 35 | ||
34 | # We need to stop ccache considering the current directory or the | 36 | # 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 @@ | |||
1 | max_size = 0 | ||
2 | cache_dir_levels = 1 | ||