Как я могу заставить правило Bazel влиять на исходное дерево исходного кода?

У меня есть два правила Базеля: один, который создаетnode_modules.tarфайл, и тот, который разбивает tar на настоящие файлы.

Когда я запускаю сборку с помощьюbazel build //node_modules_lsЯ обнаружил, что он взрывает смолу в другую среду.bazel-out, символическая ссылка на другое место. Если я добавлюlocal=True, это повлияет на мое фактическое дерево исходного кода.

Это предполагаемое использование дляlocal? Есть ли лучший способ добиться того, что я хочу здесь? На самом деле я хочу повлиять на свое дерево исходного кода, потому что у меня не было времени использовать Bazel для всех моих сценариев сборки.

      genrule(
  name = "node_modules_ls",
  local = True, # Added this line to fix my issue!
  srcs = [
    ":node_modules",
  ],
  cmd = " && ".join([
    "tar xf $(location :node_modules)",
    "tar tf $(location :node_modules) > $@",
  ]),
  outs = [
    "out.txt",
  ],
)

genrule(
  name = "node_modules",
  srcs = [
    "package.json",
    "bun.lockb",
  ],
  cmd = " && ".join([
    "(cd packages/api && bun install --frozen-lockfile)",
    "tar cf $(location :node_modules.tar) packages/api/node_modules/",
  ]),
  outs = [
    "node_modules.tar",
  ],
)

0 ответов

Другие вопросы по тегам