Как избежать удаления кэшированных файлов после сборки в Bazel - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть genrule в Базеле, который должен манипулировать некоторыми файлами.Я думаю, что я не обращаюсь к этим файлам по правильному пути, поэтому я хочу посмотреть на структуру каталогов, которую создает Bazel, чтобы я мог отлаживать.

Я добавил несколько операторов echo в мой genrule и явидно, что Базель работает в каталоге /home/lyft/.cache/bazel/_bazel_lyft/8de0a1069de8d166c668173ca21c04ae/sandbox/linux-sandbox/1/execroot/.Однако после того, как Bazel завершает работу, этот каталог исчезает, поэтому я не могу посмотреть на структуру каталогов.

Как я могу предотвратить удаление Bazel своих временных файлов, чтобы я мог отлаживать то, что происходит?

1 Ответ

0 голосов
/ 06 февраля 2019

Вы можете использовать --spawn_strategy=standalone.Вы также можете использовать --sandbox_debug, чтобы увидеть, какие каталоги смонтированы в песочнице.

Вы также можете установить для параметра genrule значение find . > $@ для отладки того, что доступно для genrule.

Важно:объявите все srcs / outs / tools, которые genrule будет читать / писать / использовать, и используйте $(location //label/of:target), чтобы найти их путь.Пример:

genrule(
    name = "x1",
    srcs = ["//foo:input1.txt", "//bar:generated_file"],
    outs = ["x1out.txt", "x1err.txt"],
    tools = ["//util:bin1"],
    cmd = "$(location //util:bin1) --input1=$(location //foo:input1.txt) --input2=$(location //bar:generated_file) --some_flag --other_flag >$(location x1out.txt) 2>$(location x1err.txt)",
)
...