Arquivos BUILD

Informar um problema Nightly · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Métodos disponíveis em arquivos BUILD. Consulte também a Enciclopédia do build para conferir funções e regras de build extras, que também podem ser usadas em arquivos BUILD.

Membros

Depset

depset depset(direct=None, order="default", *, transitive=None)

Cria um depset. O parâmetro direct é uma lista de elementos diretos do depset, e o parâmetro transitive é uma lista de depsets cujos elementos se tornam elementos indiretos do depset criado. A ordem em que os elementos são retornados quando o dispositivo é convertido em uma lista é especificada pelo parâmetro order. Consulte a Visão geral dos conjuntos de dependências para mais informações.

Todos os elementos (diretos e indiretos) de um dispositivo precisam ser do mesmo tipo, conforme obtido pela expressão type(x).

Como um conjunto baseado em hash é usado para eliminar duplicatas durante a iteração, todos os elementos de um depset precisam ser hasháveis. No entanto, essa invariante não é verificada de forma consistente em todos os construtores. Use a flag --incompatible_always_check_depset_elements para ativar a verificação consistente. Esse será o comportamento padrão em versões futuras. Consulte Issue 10313.

Além disso, os elementos precisam ser imutáveis atualmente, embora essa restrição seja flexibilizada no futuro.

A ordem do depset criado precisa ser compatível com a ordem dos depsets transitive. O pedido de "default" é compatível com qualquer outro pedido. Todos os outros pedidos são compatíveis somente com ele mesmo.

Parâmetros

Parâmetro Descrição
direct sequência ou None; o padrão é None
Uma lista de elementos diretos de um depset.
order string; o padrão é "default"
Estratégia de travessia para a nova implantação. Veja os valores possíveis aqui.
transitive sequência de depsets; ou None; o padrão é None
Uma lista de dispositivos com elementos que se tornarão elementos indiretos deles.

existing_rule

unknown existing_rule(name)

Retorna um objeto semelhante a um dicionário imutável que descreve os atributos de uma regra instanciada no pacote desta linha de execução ou None se não houver uma instância de regra com esse nome.

Aqui, um objeto semelhante a um dicionário imutável significa um objeto x profundamente imutável, compatível com iteração semelhante a dict, len(x), name in x, x[name], x.get(name), x.items(), x.keys() e x.values().

O resultado contém uma entrada para cada atributo, com exceção dos privados (cujas letras não começam com uma letra) e alguns tipos de atributos legados não representáveis. Além disso, o dicionário contém entradas para name e kind da instância da regra (por exemplo, 'cc_binary').

Os valores do resultado representam os valores do atributo da seguinte maneira:

  • Os atributos do tipo str, int e bool são representados como estão.
  • Os rótulos são convertidos em strings no formato ':foo' para destinos no mesmo pacote ou '//pkg:name' para destinos em um pacote diferente.
  • As listas são representadas como tuplas, e os dicts são convertidos em dicts novos e mutáveis. Os elementos são convertidos recursivamente da mesma maneira.
  • Os valores de select são retornados com o conteúdo transformado, conforme descrito acima.
  • Os atributos para os quais nenhum valor foi especificado durante a instanciação da regra e cujo valor padrão é calculado são excluídos do resultado. Os valores padrão calculados não podem ser calculados até a fase de análise.

Se possível, use essa função somente em funções de implementação das macros simbólicas do finalizador de regras. O uso dessa função em outros contextos não é recomendado e será desativado em uma versão futura do Bazel. torna os arquivos BUILD frágeis e dependentes de ordem. Além disso, saiba que ela difere sutilmente das duas outras conversões de valores de atributos de regras do formato interno para Starlark: uma usada por padrões computados e outra usada por ctx.attr.foo.

Parâmetros

Parâmetro Descrição
name string; obrigatório
O nome do destino.

existing_rules

unknown existing_rules()

Retorna um objeto imutável semelhante a um dicionário que descreve as regras instanciadas até o momento no pacote da linha de execução. Cada entrada do objeto semelhante a dicionário mapeia o nome da instância da regra para o resultado que seria retornado por existing_rule(name).

Aqui, um objeto semelhante a dicionário imutável significa um objeto x profundamente imutável que oferece suporte à iteração semelhante a dicionário, len(x), name in x, x[name], x.get(name), x.items(), x.keys() e x.values().

Se possível, use essa função apenas em funções de implementação de macros simbólicas de finalização de regra. O uso dessa função em outros contextos não é recomendado e será desativado em uma versão futura do Bazel. Isso torna os arquivos BUILD frágeis e dependentes da ordem.

exports_files

None exports_files(srcs, visibility=None, licenses=None)

Especifica uma lista de arquivos pertencentes a este pacote que são exportados para outros pacotes.

Parâmetros

Parâmetro Descrição
srcs sequência de strings obrigatório
A lista de arquivos a serem exportados.
visibility sequência ou None; o padrão é None
. Uma declaração de visibilidade pode ser especificada. Os arquivos serão visíveis para os destinos especificados. Se nenhuma visibilidade for especificada, os arquivos ficarão visíveis para todos os pacotes.
licenses Sequência de strings ou None. O padrão é None
. Licenças a serem especificadas.

glob

sequence glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)

O glob retorna uma lista nova, mutável e classificada de todos os arquivos no pacote atual que:
  • Corresponde a pelo menos um padrão em include.
  • Não corresponde a nenhum padrão em exclude ([] padrão).
Se o argumento exclude_directories estiver ativado (definido como 1), os arquivos do diretório do tipo serão omitidos dos resultados (o padrão é 1).

Parâmetros

Parâmetro Descrição
include sequência de strings o padrão é []
A lista de padrões glob a serem incluídos.
exclude Sequência de strings. O padrão é []
. A lista de padrões glob a serem excluídos.
exclude_directories int; O padrão é 1
Uma flag para excluir ou não diretórios.
allow_empty O padrão é unbound
Permite que os padrões glob não correspondam a nada. Se "allow_empty" for falso, cada padrão de inclusão individual precisa corresponder a algo e o resultado final precisa não estar vazio (depois que as correspondências dos padrões "exclude" forem excluídas).

module_name

string module_name()

O nome do módulo do Bazel associado ao repositório em que este pacote está. Se o pacote for de um repositório definido em WORKSPACE em vez de MODULE.bazel, ele estará vazio. Para repositórios gerados por extensões de módulo, esse é o nome do módulo que hospeda a extensão. É o mesmo que o campo module.name visto em module_ctx.modules. Pode retornar None.

module_version

string module_version()

A versão do módulo do Bazel associada ao repositório em que este pacote está. Se o pacote for de um repositório definido em WORKSPACE em vez de MODULE.bazel, ele estará vazio. Para repositórios gerados por extensões de módulo, essa é a versão do módulo que hospeda a extensão. É o mesmo que o campo module.version mostrado em module_ctx.modules. Pode retornar None.

package_group

None package_group(name, packages=[], includes=[])

Essa função define um conjunto de pacotes e atribui um rótulo ao grupo. O rótulo pode ser referenciado nos atributos visibility.

Parâmetros

Parâmetro Descrição
name string; obrigatório
O nome exclusivo da regra.
packages sequência de strings o padrão é []
Uma enumeração completa dos pacotes neste grupo.
includes sequência de strings o padrão é []
Outros grupos de pacotes incluídos neste.

package_name

string package_name()

O nome do pacote que está sendo avaliado, sem o nome do repositório. Por exemplo, no arquivo BUILD some/package/BUILD, o valor será some/package. Se o arquivo BUILD chamar uma função definida em um arquivo .bzl, package_name() corresponderá ao pacote de arquivos BUILD do autor da chamada.

package_relative_label

Label package_relative_label(input)

Converte a string de entrada em um objeto Label, no contexto do pacote que está sendo inicializado (ou seja, o arquivo BUILD em que a macro atual está sendo executada). Se a entrada já for um Label, ela será retornada inalterada.

Esta função só pode ser chamada durante a avaliação de um arquivo BUILD e as macros que ele chama direta ou indiretamente. ele pode não ser chamado em (por exemplo) uma função de implementação de regra.

O resultado dessa função é o mesmo valor Label que seria produzido transmitindo a string fornecida para um atributo com valor de rótulo de um destino declarado no arquivo BUILD.

Observação de uso:a diferença entre essa função e Label() é que Label() usa o contexto do pacote do arquivo .bzl que a chamou, não o pacote do arquivo BUILD. Use Label() quando precisar se referir a um destino fixo que está fixado no código da macro, como um compilador. Use package_relative_label() quando precisar normalizar uma string de rótulo fornecida pelo arquivo BUILD para um objeto Label. Não há como converter uma string em um Label no contexto de um pacote que não seja o arquivo BUILD ou o arquivo .bzl de chamada. Por esse motivo, as macros externas devem sempre dar preferência a transmitir objetos de rótulo para macros internas em vez de strings de rótulo.

Parâmetros

Parâmetro Descrição
input string; ou Rótulo; obrigatório
A string do rótulo de entrada ou o objeto de rótulo. Se um objeto Rótulo for passado, será retornado no estado em que se encontra.

repo_name

string repo_name()

O nome canônico do repositório que contém o pacote que está sendo avaliado, sem sinais de arroba no início.

repository_name

string repository_name()

Experimental. Essa API é experimental e pode mudar a qualquer momento. Não dependa dele. Ele pode ser ativado de forma experimental configurando --+incompatible_enable_deprecated_label_apis como
Descontinuado. Prefira usar repo_name, que não contém o arroba falso, mas se comporta de maneira idêntica.

O nome canônico do repositório que contém o pacote que está sendo avaliado, com um único sinal de @ (@) como prefixo. Por exemplo, em pacotes que são chamados para a existência pela estrofe local_repository(name='local', path=...) do ESPAÇO DE TRABALHO, ela será definida como @local. Nos pacotes no repositório principal, ele será definido como @.

select

unknown select(x, no_match_error='')

select() é a função auxiliar que torna um atributo de regra configurável. Consulte a enciclopédia de builds para mais detalhes.

Parâmetros

Parâmetro Descrição
x dict; obrigatório
Um dicionário que mapeia condições de configuração para valores. Cada chave é um Label ou uma string de rótulo que identifica uma instância de config_setting ou constraints_value. Consulte a documentação sobre macros para saber quando usar um rótulo em vez de uma string.
no_match_error string; o padrão é ''
Erro personalizado opcional a ser informado se nenhuma condição corresponder.

subpacotes

sequence subpackages(include, exclude=[], allow_empty=False)

Retorna uma nova lista mutável de cada subpacote direto do pacote atual, independentemente da profundidade do diretório do sistema de arquivos. A lista retornada é classificada e contém os nomes dos subpacotes relacionados ao pacote atual. É recomendável usar os métodos no módulo bazel_skylib.subpackages em vez de chamar essa função diretamente.

Parâmetros

Parâmetro Descrição
include sequência de strings obrigatório
A lista de padrões glob a serem incluídos na verificação de subpacotes.
exclude sequência de strings o padrão é []
A lista de padrões glob a serem excluídos da verificação de subpacotes.
allow_empty bool; o padrão é False
Indica se a chamada falha quando retorna uma lista vazia. Por padrão, a lista vazia indica um possível erro no arquivo BUILD, em que a chamada para subpackages() é supérflua. A definição como "true" permite que essa função tenha sucesso nesse caso.