Как заставить Bazel, ccache и песочницу работать вместе (ccache только для чтения, файловая система) - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь создать приложение C ++ на Fedora 28, используя Bazel 0.16.1, установленный через copr, и ccache 3.4.2, установленный через DNF. Я использую стандартные правила cc_binary и cc_library. Когда я запускаю команду bazel build, ошибки ccache выводятся с помощью:

ccache: error: Failed to create temporary file for /home/mwalker/.ccache/tmp/time.stdout: Read-only file system

При сборке с --verbose_failures --sandbox_debug я вижу, что мы не монтируем каталог ccache tmp r / w.

Итак, как мне заставить bazel монтировать мой каталог ccache r / w, или как через cazache сообщить ccache, где находится правильный каталог кэша для моей рабочей области?

Когда я запускаю ту же команду в Ubuntu 18.04, она успешно выполняется, поэтому я полагаю, что ccache каким-то образом поддерживается.

Похоже, что часть моей проблемы в том, что ccache установил свой драйвер компилятора как gcc. Например. which gcc -> /usr/lib64/ccache/gcc. Где в Ubuntu должен явно вызываться ccache, а набор инструментов по умолчанию не вызывает его.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Была такая же проблема в Fedora 29, в моем случае была решена путем экспорта следующих переменных среды:

export CC="/usr/bin/gcc"
export CXX="/usr/bin/g++"

https://github.com/bazelbuild/bazel/issues/1322#issuecomment-226919588

0 голосов
/ 18 сентября 2018

Вы можете добавить существующие каталоги в песочницу с помощью --sandbox_writable_path=<path> [1].


[1] https://docs.bazel.build/versions/master/command-line-reference.html

...