nativa

Um módulo integrado para dar suporte a 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 está disponível apenas 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 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().

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 dict contém entradas para o name e o kind da instância da regra (por exemplo, 'cc_binary').

Os valores do resultado representam valores de 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 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 padrões computados 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, 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 obrigatório
O nome do destino.

existing_rules

unknown native.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 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 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().

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 poderá ser muito cara, especialmente se for chamada dentro de uma repetição.

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 sequence of strings obrigatório
A lista de arquivos a serem exportados.
visibility sequence; or None padrão = Nenhum
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 vão ficar visíveis para todos os pacotes.
licenses sequence of strings; or None padrão = Nenhum
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 do 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 de tipo serão omitidos dos resultados (o padrão é 1).

Parâmetros

Parâmetro Descrição
include sequence of strings padrão = []
A lista de padrões glob a serem incluídos.
exclude sequence of strings padrão = []
A lista de padrões glob a serem excluídos.
exclude_directories padrão = 1
Uma sinalização para excluir diretórios ou não.
allow_empty padrão = não vinculado
Se os padrões glob não correspondem a nada. Se "allow_empty" for "False", cada padrão de inclusão individual precisa corresponder a algo, e o resultado final não pode estar vazio (depois que as correspondências dos padrões de "excluir") forem excluídas.

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 nos atributos visibility.

Parâmetros

Parâmetro Descrição
name obrigatório
O nome exclusivo desta regra.
packages sequence of strings padrão = []
Uma enumeração completa dos pacotes neste grupo.
includes sequence of strings 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 descontinuada PACKAGE_NAME.

repository_name

string native.repository_name()

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

subpacotes

sequence native.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 relativos ao pacote atual. Recomendamos 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 sequence of strings obrigatório
A lista de padrões glob a serem incluídos na verificação de subpacotes.
exclude sequence of strings padrão = []
A lista de padrões glob a serem excluídos da verificação de subpacotes.
allow_empty padrão = Falso
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. Se for definido como verdadeiro, a função será executada com sucesso nesse caso.