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 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
- existing_rules
- exports_files
- glob
- package_group
- package_name
- package_relative_label
- repository_name
- subpacotes
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 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 valores de atributo da seguinte maneira:
- 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, ela difere sutilmente das outras duas conversões de valores de atributos de regras do formulário interno para o Starlark: uma usada por padrões computados e a outra por ctx.attr.foo
.
Parâmetros
Parâmetro | Descrição |
---|---|
name
|
required O nome do destino. |
existing_rules
unknown native.existing_rules()Retorna um objeto semelhante a dicionário imutável 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 esse pacote que são exportados para outros pacotes.
Parâmetros
Parâmetro | Descrição |
---|---|
srcs
|
sequence of strings ;
obrigatórioA lista de arquivos a serem exportados. |
visibility
|
sequence; or None ;
padrão = NenhumUma declaração de visibilidade pode ser especificada. Os arquivos vão ficar visíveis para os destinatários 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 = NoneLicenças a serem especificadas. |
glob
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 no pacote atual que:
- 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 diretório do tipo serão omitidos dos resultados (o padrão é 1
).
Parâmetros
Parâmetro | Descrição |
---|---|
include
|
sequence of strings ;
default = []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 da regra. |
packages
|
sequence of strings ;
default = []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
.
package_relative_label
Label native.package_relative_label(input)Converte a string de entrada em um objeto Label, no contexto do pacote que está sendo inicializado (ou seja, o arquivo
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 transmitindo a string fornecida 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 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 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 esse motivo, as macros externas devem sempre dar preferência a transmitir objetos de rótulo para macros internas em vez de strings de rótulo.
Parâmetros
Parâmetro | Descrição |
---|---|
input
|
string; or Label ;
obrigatórioA string do rótulo de entrada ou o objeto de rótulo. Se um objeto Label for transmitido, ele será retornado como está. |
repository_name
string native.repository_name()O nome do repositório de onde a regra ou a extensão de build é chamada. Por exemplo, em pacotes que são chamados pela stanza WORKSPACE
local_repository(name='local', path=...)
, ele será definido como @local
. Nos pacotes do repositório principal, ele será definido como @
. Essa função é equivalente à variável REPOSITORY_NAME
, que foi descontinuada.
subpacotes
sequence native.subpackages(include, exclude=[], allow_empty=False)Retorna uma nova lista mutável de todos os subpacotes diretos do pacote atual, independentemente da profundidade do diretório do sistema de arquivos. A lista retornada é classificada e contém os nomes dos subpacotes relacionados 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órioA 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. A definição como "true" permite que essa função tenha sucesso nesse caso. |