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().
Se a flag --noincompatible_existing_rules_immutable_view estiver definida, vai retornar um novo dicionário mutável com o mesmo conteúdo.
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 no estado em que se encontram.
- 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
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 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
|
obrigatório 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 a flag --noincompatible_existing_rules_immutable_view estiver definida, vai retornar um novo dicionário mutável 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, principalmente se for chamada em um loop.
exports_files
None native.exports_files(srcs, visibility=None, licenses=None)Parâmetros
| Parâmetro | Descrição |
|---|---|
srcs
|
sequence de strings;
obrigatório 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
|
O padrão é 1Uma 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
|
obrigatório O nome exclusivo desta 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 é possível 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 no estado em que se encontra. |
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
|
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. |