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 None valores 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_default_visibility
- 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, com exceção dos 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 o name e o kind da instância de regra (por exemplo, 'cc_binary').
Os valores do resultado representam valores de atributos da seguinte maneira:
- Os atributos do tipo str, int e bool são representados no estado em que se encontra.
- 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 dicionários novos e mutáveis. Os elementos são convertidos recursivamente da mesma maneira.
- Os valores
selectsã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 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 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. 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 regra do formulário interno para o 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().
Se possível, use essa função apenas em funções de implementação de 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. 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ório A lista de arquivos a serem exportados. |
visibility
|
sequência; ou None;
o padrão é NoneUma declaração de visibilidade pode ser especificada. Os arquivos ficarã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 é NoneLicenç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
|
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 é 1Um flag para excluir ou não diretórios. |
allow_empty
|
o padrão é unboundSe permitimos que padrões glob não correspondam a nada. Se `allow_empty` for falso, cada padrão de inclusão individual precisará corresponder a algo, e o resultado final também precisará ser não vazio (depois que as correspondências dos padrões `exclude` 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_default_visibility
List native.package_default_visibility()
default_visibility de package(), estendido para incluir o próprio pacote.
package_group
None native.package_group(*, name, packages=[], includes=[])visibility.
Parâmetros
| Parâmetro | Descrição |
|---|---|
name
|
string;
obrigatório O nome exclusivo dessa regra. |
packages
|
sequência de strings;
o padrão é []Uma enumeração completa de 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() vai corresponder ao pacote do arquivo BUILD do autor da chamada. O valor sempre será uma string vazia para o pacote raiz.
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 durante a avaliação de um arquivo BUILD e das macros que ele chama direta ou indiretamente. Ela não pode ser chamada em (por exemplo) uma função de implementação de regra.
O resultado dessa função é o mesmo valor Label que seria produzido ao transmitir a string fornecida 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 a chamou, não o pacote do arquivo BUILD. Use Label() quando precisar se referir a um destino fixo codificado 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 é possível converter uma string em um Label no contexto de um pacote diferente do arquivo BUILD ou do arquivo .bzl de chamada. Por esse motivo, as macros externas sempre preferem transmitir objetos de rótulo para macros internas em vez de strings de rótulo.)ctx.package_relative_label() fornece a mesma funcionalidade em uma função de implementação de regra ou aspecto.
Parâmetros
| Parâmetro | Descrição |
|---|---|
input
|
string; ou Label;
obrigatório A string de rótulo de entrada ou o objeto de rótulo. Se um objeto de rótulo for transmitido, ele 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 Obsoleto. Prefira usar
repo_name, que não contém o sinal de arroba à esquerda espúrio, mas se comporta de maneira idêntica.O nome canônico do repositório que contém o pacote que está sendo avaliado no momento, com um único sinal de arroba (@) prefixado. Por exemplo, em pacotes que são chamados para existência pela seção WORKSPACE local_repository(name='local', path=...), ele será definido como @local. Em pacotes no repositório principal, ele será definido como @.
subpackages
sequence native.subpackages(*, include, exclude=[], allow_empty=False)
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 é FalseSe falhamos quando a chamada 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 verdadeira permite que essa função seja bem-sucedida nesse caso. |