nativa

Informar um problema Mostrar fonte Noite · 7,4 do Google. 7.3 · 7.2 · 7.1 · 7.0 · 6.5

um módulo integrado compatível com regras nativas e outras funções auxiliares de pacote Todas as regras nativas aparecem como funções neste módulo, por exemplo, native.cc_library. O módulo nativo só está disponível na fase de carregamento (ou seja, para macros, não para implementações de regras). Os atributos ignorarão valores None e os tratarão como se o atributo não estivesse definido.
As seguintes funções também estão disponíveis:

Membros

existing_rule

unknown native.existing_rule(name)

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

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 a flag --noincompatible_existing_rules_immutable_view estiver definida, um novo dict mutável será retornado com o mesmo conteúdo.

O resultado contém uma entrada para cada atributo, com exceção dos particulares (com nomes que não começam com uma letra) e alguns tipos de atributos legados irrepresentá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:

  • Atributos do tipo str, int e bool são representados como estão.
  • Os rótulos são convertidos em strings do 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, evite usar essa função. Isso torna os arquivos BUILD frágeis e dependentes da ordem. Além disso, ela difere sutilmente das outras duas conversões de valores de atributos de regras do formulário interno para o Starlark: uma usada por padrões computados e a outra por ctx.attr.foo.

Parâmetros

Parâmetro Descrição
name required
O nome do destino.

existing_rules

unknown native.existing_rules()

Retorna um objeto semelhante a dicionário imutável que descreve as regras instanciadas até o momento no pacote da linha de execução. Cada entrada desse objeto 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 a flag --noincompatible_existing_rules_immutable_view estiver definida, um novo dict mutável será retornado com o mesmo conteúdo.

Observação: se possível, evite usar essa função. Isso torna os arquivos BUILD frágeis e dependentes da ordem. Além disso, se a flag --noincompatible_existing_rules_immutable_view estiver definida, essa função pode ser muito cara, especialmente se for chamada em um loop.

exports_files

None native.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.

massa

sequence native.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 tipo diretório serão omitidos dos resultados (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 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 native.module_name()

O nome do módulo do Bazel associado ao repositório em que este pacote está. Se este 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 mostrado em module_ctx.modules. Pode retornar None.

module_version

string native.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 visto em module_ctx.modules. Pode retornar None.

package_group

None native.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 em atributos visibility.

Parâmetros

Parâmetro Descrição
name 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 native.package_name()

O nome do pacote que está sendo avaliado. Por exemplo, no arquivo BUILD some/package/BUILD, o valor dele 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. Essa função é equivalente à variável PACKAGE_NAME, que foi descontinuada.

package_relative_label

Label native.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 sem alterações.

Essa função só pode ser chamada durante a avaliação de um arquivo BUILD e das macros que ele chama diretamente ou indiretamente. Ela não pode ser chamada em uma função de implementação de regra, por exemplo.

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 o 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 Label; obrigatório
A string do rótulo de entrada ou o objeto Label. Se um objeto Rótulo for passado, será retornado no estado em que se encontra.

repository_name

string native.repository_name()

O nome do repositório de onde a regra ou a extensão de build é chamada. 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 do repositório principal, ele será definido como @. Essa função é equivalente à variável REPOSITORY_NAME, que foi descontinuada.

subpacotes

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

Retorna uma nova lista mutável de todos os subpacotes diretos 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 o padrão é False
Se falharemos se a chamada retornar uma lista vazia. Por padrão, uma lista vazia indica um possível erro no arquivo BUILD, em que a chamada para subpackages() é superflora. A definição como "true" permite que essa função tenha sucesso nesse caso.