Как я могу передать значение псевдонима функции bazel?
У меня есть следующий псевдоним, определенный в файле BUILD:
alias(
name = "platform",
actual = select({
":macos_x86_64": "macos_x86_64",
":linux_x86_64": "linux_x86_64",
":linux_aarch64": "linux_aarch64",
}),
visibility = ["//visibility:public"],
)
Как передать «фактической» строке такой функции?
def myFunction(platform): ...
Я пытаюсь сделать самое наивное, и он не понимает, что это псевдоним, а не строка:
myFunction("//bazel/config:platform")
1 ответ
def myFunction
создает макрос , а не правило . Макросы не могут получить доступ к значениям
select
, только добавьте к нему другие выборки и передайте их в rules. Еще один способ подумать о разнице: очень мало вещей, которые может сделать макрос, которые нельзя сделать непосредственно в файле BUILD.
Кроме того, alias.actual является
Label
. Даже когда вы передаете его правилу, значения должны быть допустимыми метками и будут обрабатываться соответствующим образом. Однако вы можете использовать Label.name , чтобы вернуть имя.