Скопируйте каталог в новый каталог в Bazel

По сути, все, что я хочу, это cp -r src/ dist/, но по какой-то причине я просто не могу заставить это работать.

В настоящее время я пытаюсь:

filegroup(
    name = "src_files",
    srcs = glob([
        "src/**",
    ]),
)
filegroup(
    name = "dist_files",
    srcs = glob([
        "dist/**"
    ]),
)
genrule(
    name = "copy",
    srcs = ["//packages/variables:src_files"],
    outs = ["//packages/variables:dist_files"],
    cmd = "cp -R $(locations //packages/variables:src_files) $(locations //packages/variables:dist_files)"
)

Я просмотрел как минимум 4 страницы Google и документации, но кажется, если я не создам правило и не укажу вручную все 100 файлов в правиле, это не сработает?

1 ответ

@JamesSharpe получил то, чего мне не хватало, обновил файл BUILD до:

filegroup(
    name = "src_files",
    srcs = glob([
        "src/**",
    ]),
)
pkg_tar(
    name = "pack_srcs",
    extension = "tar.gz",
    srcs = [":src_files"],
)
genrule(
    name = "unpack_to_dist",
    srcs = [":pack_srcs"],
    outs = ["dist"],
    cmd = "mkdir $(RULEDIR)/dist && tar -C $(RULEDIR)/dist -zxvf $(SRCS)"
)

И смог успешно передать это нижестоящему правилу.

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