Сборка Bazel: добавьте дополнительные зависимости не в `WORKSPACE`

Я хотел бы написать несколько сценариев профилирования в проекте и использовать action_listenerили же aspectпринять меры. Однако лучше не изменять файлы проекта. Есть ли способ добавить некоторые внешние зависимости без изменений WORKSPACEфайл?

1 ответ

РАБОЧЕЕ ПРОСТРАНСТВО

      workspace(name = "my_workspace")

load("//:bazel/third_party/my_profile_deps.bzl", "my_profile_deps")

my_profile_deps()

Базель/третья сторона/my_profile_deps.bzl

      load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")

def my_profile_deps():
    """Fetch my profile deps."""
    

    if True: # Switch to turn on/off
        # ... 
        maybe(
            http_archive,
            name = "some_lib",
            build_file = "...",
            sha256 = "...",
            strip_prefix = "..",
            urls = [
                "...",
                "...",
            ],
        )

Зависимости извлекаются только в случае необходимости. Поэтому можно подумать о введении настраиваемых атрибутов сборки .

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