Как я могу передать значение псевдонима функции 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 , чтобы вернуть имя.

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