#bazel #bazel-rules
#базель #базель-правила
Вопрос:
Я использую bazel для создания своего проекта golang. Я хочу использовать крипто-библиотеки, совместимые с fips.
Я внес эти изменения в свое РАБОЧЕЕ пространство.bazel —
load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies", "go_download_sdk") go_rules_dependencies() go_register_toolchains(version = "1.14.8") go_download_sdk( name = "go_sdk", sdks = { "linux_amd64": ("go1.14.15b4.linux-amd64.tar.gz", "82ba7297d26afcdade439de5621bdcb16e5261877f204aa60d03b5e07223a5c8"), }, urls = ["https://go-boringcrypto.storage.googleapis.com/{}"], )
Это прекрасно работает, и сборка в Ubuntu проходит успешно. Но если я запущу его на macOS, я получу ошибку неподдерживаемой платформы.
Вышеуказанный пакет sdk boringcrypto недоступен для macos. Поэтому я хочу удалить эту зависимость в случае, если платформа-darwinamd64. Как я могу выборочно добавить эту зависимость на основе ОС? Я хочу добавить этот sdk, если ОС Linux, а не если ОС macOS.
Ответ №1:
config_setting
и select
может помочь вам здесь, например:
config_setting( name = "macos", constraint_values = [ "@bazel_tools//platforms:osx", ], visibility = ["//visibility:public"], ) cc_test( name = "test", srcs = ["test.cc"], copts = select({ ":macos": ["/std:c 17"], "//conditions:default": ["-std=c 1z"], }), )
Комментарии:
1. Я использую go_rules, в частности go_dowload_sdk. В go_download_sdk нет атрибута copts , который я мог бы использовать. Я также попробовал go_wrap_sdk с атрибутом attribute_files, но у меня это не сработало.