3

我无法从ccache我的詹金斯管道构建中获得一致的好处。我正在设置CCACHE_BASEDIR为我当前构建目录的父目录(这类似于/opt/jenkins/workspace)。鉴于这个 basedir,我希望所有共享这个共同父级的 PR/分支构建能够在缓存中找到命中,但可惜他们没有。我确实看到给定目录中后续构建的缓存命中(例如,如果我手动重建特定 PR),这意味着它CCACHE_BASEDIR不像我预期的那样工作。

为了进一步诊断,我尝试了设置CCACHE_LOGFILE,虽然该文件是由构建生成的,但它实际上是空的(它只包含两行指示 ccache 的版本)。

任何人都可以提出具体的设置或技术,以从ccache詹金斯管道或其他尝试诊断问题的方法中获得最大收益吗?什么可能导致空的 ccache 日志文件?

我正在运行ccache3.3.4。

4

1 回答 1

1

问题第一部分的解决方案可能是设置hash_dir = falseCCACHE_NOHASHDIR=1如果使用环境变量)或设置-fdebug-prefix-map=old=new将调试信息重新定位到公共前缀(例如-fdebug-prefix-map=$PWD=.)。更多详细信息可以在 ccache 手册中的“在不同目录中编译”部分找到。

关于 CCACHE_LOGFILE:我以前从未听说过这个问题(我是 ccache 维护者,顺便说一句),但是如果您将 CCACHE_LOGFILE 设置为相对文件路径,请尝试将其设置为绝对路径。

于 2018-02-13T20:05:35.897 回答