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
- subpackages
existing_rule
unknown native.existing_rule(name)
None
se não houver uma instância de regra com esse nome.Aqui, um objeto imutável semelhante a um dicionário significa um objeto profundamente imutável x
que oferece suporte à iteração semelhante a um dicionário, 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, exceto os particulares (cujos nomes 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 valores de atributos da seguinte forma:
- 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 dicionários são convertidos em novos dicionários mutáveis. Os elementos deles são convertidos recursivamente da mesma forma.
- 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 calculados só podem ser computados na 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, ele difere sutilmente das outras duas conversões de valores de atributos de regra do formulário interno para Starlark: uma usada por padrões calculados e a outra usada por ctx.attr.foo
.
Parâmetros
Parâmetro | Descrição |
---|---|
name
|
string;
required O nome do destino. |
existing_rules
unknown native.existing_rules()
existing_rule(name)
.Aqui, um objeto imutável semelhante a um dicionário significa um objeto profundamente imutável x
que oferece suporte à iteração semelhante a um dicionário, len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
e x.values()
.
Observação: se possível, evite usar essa função. 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
|
sequence de strings;
required A lista de arquivos a serem exportados. |
visibility
|
sequence ou None . O padrão é None . Uma declaração de visibilidade pode ser especificada. Os arquivos vão ficar 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 dos padrões 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
|
sequence de strings;
o padrão é [] A lista de padrões glob a serem incluídos. |
exclude
|
sequence de strings;
o padrão é [] A lista de padrões glob a serem excluídos. |
exclude_directories
|
int;
o padrão é 1 Uma flag que indica se os diretórios devem ser excluídos ou não. |
allow_empty
|
O padrão é unbound Define se permitimos que padrões glob não correspondam a nada. Se `allow_empty` for False, cada padrão de inclusão individual precisará corresponder a algo, e o resultado final não poderá estar vazio (depois que as correspondências dos padrões de exclusão forem excluídas). |
module_name
string native.module_name()
module.name
visto em module_ctx.modules
.
Pode retornar None
.
module_version
string native.module_version()
module.version
visto 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;
required O nome exclusivo dessa regra. |
packages
|
sequência de strings;
o padrão é [] Uma enumeração completa de pacotes neste grupo. |
includes
|
sequence 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()
vai corresponder ao pacote do arquivo BUILD de chamada.
package_relative_label
Label native.package_relative_label(input)
BUILD
para o qual 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 ao avaliar um arquivo BUILD e as macros que ele chama direta ou indiretamente. Ela não pode ser chamada, por exemplo, em uma função de implementação de regra.
O resultado dessa função é o mesmo valor Label
que seria produzido ao transmitir a string especificada a 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 uma meta fixa codificada na 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 isso, as macros externas sempre preferem 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;
required A string de rótulo de entrada ou o objeto Label. Se um objeto de rótulo for transmitido, ele será retornado como está. |
repo_name
string native.repo_name()
repository_name
string native.repository_name()
--+incompatible_enable_deprecated_label_apis
Descontinuado. Prefira usar
repo_name
, que não contém o sinal de arroba inicial espúrio, mas se comporta de maneira idêntica.O nome canônico do repositório que contém o pacote em avaliação, com um único arroba (@
) como prefixo. Por exemplo, em pacotes que são chamados pela estrofe WORKSPACE local_repository(name='local', path=...)
, ele será definido como @local
. Em 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
|
sequence de strings;
required A lista de padrões glob a serem incluídos na verificação de subpacotes. |
exclude
|
sequence 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 Se vamos falhar 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() é supérflua. Definir como "true" permite que essa função seja bem-sucedida nesse caso. |