Um módulo integrado para oferecer 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 só está disponível na fase de carregamento (ou seja, para macros, não para implementações de regras). Os atributos vão ignorar os valores None
e tratá-los como se o atributo não estivesse definido.
As seguintes funções também estão disponíveis:
Membros
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package_group
- package_name
- package_relative_label
- repo_name
- repository_name
- subpacotes
existing_rule
unknown native.existing_rule(name)
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 do formulário
':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 de forma recursiva 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 padrões computados não podem ser calculados até a fase de análise.
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. 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 native.existing_rules()
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
native.exports_files(srcs, visibility=None, licenses=None)
Parâmetros
Parâmetro | Descrição |
---|---|
srcs
|
Sequência de strings;
obrigatória 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 vão ficar visíveis para todos os pacotes. |
licenses
|
Sequência de strings ou None ;
O padrão é None Licenças a serem especificadas. |
glob
sequence native.glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)
- Corresponde a pelo menos um padrão em
include
. - Não corresponde a nenhum padrão em
exclude
([]
padrão).
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
|
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 native.module_name()
module.name
mostrado em module_ctx.modules
.
Pode retornar None
.
module_version
string native.module_version()
module.version
mostrado em module_ctx.modules
.
Pode retornar None
.
package_group
None
native.package_group(name, packages=[], includes=[])
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 nesse grupo. |
includes
|
Sequência de strings.
O padrão é [] . Outros grupos de pacotes incluídos neste. |
package_name
string native.package_name()
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 native.package_relative_label(input)
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 ao transmitir a string especificada 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 Label
no contexto de um pacote, exceto no arquivo BUILD ou no arquivo .bzl de chamada. Por esse motivo, as macros externas sempre devem preferir transmitir objetos Label 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. |
repo_name
string native.repo_name()
repository_name
string native.repository_name()
--+incompatible_enable_deprecated_label_apis
Deprecated. Use
repo_name
, que não contém o sinal de interrogação inicial 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 @
.
subpacotes
sequence native.subpackages(include, exclude=[], allow_empty=False)
Parâmetros
Parâmetro | Descrição |
---|---|
include
|
Sequência de strings;
obrigatória 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. Se for definido como verdadeiro, a função será executada com sucesso nesse caso. |