[Buildroot] [PATCH] ccache: make default host-ccache cache dir fit for multi-user setups

Peter Korsgaard peter at korsgaard.com
Fri Jul 7 09:48:08 UTC 2017


>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni at free-electrons.com> writes:

Hi,

 >> No, but as far as I read the ccache code, it will create the cache dir +
 >> parent directories if they don't exist.
 >> 
 >> E.G.:
 >> 
 >> CCACHE_DIR=/tmp/some/funky/sub/directory ccache -s
 >> cache directory                     /tmp/some/funky/sub/directory
 >> primary config                      /tmp/some/funky/sub/directory/ccache.conf
 >> secondary config      (readonly)    /etc/ccache.conf
 >> cache hit (direct)                     0
 >> cache hit (preprocessed)               0
 >> cache miss                             0
 >> cache hit rate                      0.00 %
 >> cleanups performed                     0
 >> files in cache                         0
 >> cache size                           0.0 kB
 >> max cache size                       5.0 GB
 >> ls -l /tmp/some/funky/sub/directory
 >> total 4
 >> -rw-r--r-- 1 peko peko 16 Jul  7 00:26 ccache.conf

 > OK, but I definitely don't want ccache to create a random directory
 > somewhere in my $HOME folder, just because it was hardcoded into the
 > ccache binary.

Ehh, that is what ccache normally does (E.G. ~/.ccache), similar to a
bunch of other utilities. Without this change things will just break
instead as you most likely don't have a /home/peko/.buildroot-ccache on
your system (or if you do, have write access to it).


 >> Hardcoding /home/thomas/.buildroot-ccache is very unlikely to work for
 >> other users, whereas ~/.buildroot-cache is quite likely.

 > Sure. But if I set BR2_CCACHE_DIR to /opt/ccache/, it won't work when
 > the SDK is moved to another machine (permissions may not be set), and
 > if I set BR2_CCACHE_DIR to $HOME/projects/foobar/cache/, and you run my
 > SDK on your system, you will get this funky folder created.

You presumably would have specific reasons to customize BR2_CCACHE_DIR
like this (and make the needed arrangements to have E.G /opt/ccache
available), so I don't see what the problem would be.

Having a BR2_CCACHE_DIR option (with a default value of
$(HOME)/.buildroot-cache) ending up hardcoding
/home/$sdkbuilduser/.buildroot-cache in the binary seems to me far from
obvious behavior and goes against the goals of reproducible builds and
reusable sdks.

-- 
Bye, Peter Korsgaard



More information about the buildroot mailing list