Как мне упаковать все мои файлы в bazel? - PullRequest
0 голосов
/ 09 июня 2018

Существует множество файлов BUILD, разбросанных по всей иерархии моего моно репо.
Некоторые из этих файлов содержат cc_binary правила.
Я знаю, что они все встроены в bazel-bin, но я быхотел бы получить легкий доступ ко всем.
Как я могу упаковать их все и, например, поместить в ~/.bin/?

Я вижу правила упаковки , номне не ясно, как написать правило, которое собирает каждую отдельную программу и упаковывает их вместе.

1 Ответ

0 голосов
/ 10 июня 2018

Возможно, это не самое элегантное решение (плюс, я надеюсь, у меня возник вопрос), но именно так мы и делаем, упаковывая / «tarring» каждый двоичный файл в свой собственный пакет bazel / BUILD file:

cc_binary(
    name = "hello"
    ...
)

load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar")
pkg_tar(
    name = "hello_pkg",
    srcs = [":hello"],
    mode = "0755",
    package_dir = "/usr/bin",
)

И затем мы собираем все это в один общий архив / пакет в корне проекта:

pkg_tar(
    name = "mypkg",
    extension = "tar.gz",
    deps = [
        "//hello:hello_pkg",
        ...
    ],
)

Иногда у нас может быть несколько таких правил, чтобы привет собирал исполняемые файлы экземплярав bin и библиотеки в lib с промежуточными целями hello_bin и hello_lib.Который таким же образом, как mypkg выше, будет сначала агрегирован в hello_pkg, а это, в свою очередь, будет использовано в mypkg.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...