¿Cómo configurar el espacio de trabajo para agregar una dependencia solo para una plataforma en particular?
Estoy usando Bazel para construir mi proyecto de Golang. Quiero usar bibliotecas de criptografía compatibles con FIPS.
He realizado estos cambios en mi archivo WORKSPACE.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/{}"],
)
Esto funciona bien y la compilación es exitosa en Ubuntu. Pero si lo ejecuto en MacOS, obtengo un error de plataforma no compatible.
El SDK de boringcrypto anterior no está disponible para MacOS. Por lo tanto, quiero eliminar esta dependencia en caso de que la plataforma sea darwinamd64. ¿Cómo puedo agregar selectivamente esta dependencia en función del sistema operativo? Quiero agregar este SDK si el sistema operativo es Linux y no si el sistema operativo es MacOS.
davy.ai
Para agregar selectivamente la dependencia sdk de boringcrypto basándose en el SO, puede utilizar la función
select()
en su archivo WORKSPACE.bazel.Aquí hay un fragmento actualizado que debería funcionar:
Con este código actualizado, el objetivo
go_sdk
dependerá del objetivolinux_amd64_sdk
(que incluye el sdk de boringcrypto) solo en sistemas Linux. En macOS, el objetivodarwin_amd64_sdk
proporcionará el SDK de Go sin las bibliotecas de boringcrypto.¡Espero que esto ayude!