Métodos disponíveis em arquivos BUILD. Consulte também a Enciclopédia de build para conferir funções e regras de build extras, que também podem ser usadas em arquivos BUILD.
Membros
- depset (link em inglês)
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package_group
- package_name
- package_relative_label
- repository_name
- selecionar
- subpacotes
depset
depset depset(direct=None, order="default", *, transitive=None)Cria um depset. O parâmetro
direct
é uma lista de elementos diretos do depset, e o parâmetro transitive
é uma lista de depsets cujos elementos se tornam elementos indiretos do depset criado. A ordem em que os elementos são retornados quando o depset é convertido em uma lista é especificada pelo parâmetro order
. Consulte a Visão geral dos conjuntos de dependências para mais informações.
Todos os elementos (diretos e indiretos) de um depset precisam ser do mesmo tipo, conforme obtido pela expressão type(x)
.
Como um conjunto baseado em hash é usado para eliminar duplicatas durante a iteração, todos os elementos de um depset precisam ser hasháveis. No entanto, esse invariante não é verificado de forma consistente em todos os construtores. Use a flag --incompatible_always_check_depset_elements para ativar a verificação consistente. Esse será o comportamento padrão em versões futuras. Consulte Issue 10313.
Além disso, os elementos precisam ser imutáveis, embora essa restrição seja relaxada no futuro.
A ordem do depset criado precisa ser compatível com a ordem dos depsets transitive
. O pedido "default"
é compatível com qualquer outro pedido, e todos os outros pedidos são compatíveis apenas com eles mesmos.
Parâmetros
Parâmetro | Descrição |
---|---|
direct
|
sequência ou None ;
o padrão é None Uma lista de elementos diretos de um depset. |
order
|
O padrão é "default" , a estratégia de travessia para o novo depset. Consulte aqui os valores possíveis. |
transitive
|
sequência de depsets ou None ;
o padrão é None Uma lista de depsets cujos elementos se tornarão elementos indiretos do depset. |
existing_rule
unknown existing_rule(name)Retorna um objeto semelhante a um dicionário imutável que descreve os atributos de uma regra instanciada no pacote desta linha de execução ou
None
se não houver uma instância de regra com esse nome.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 a flag --noincompatible_existing_rules_immutable_view
estiver definida, ela retornará um novo dicionário mutável 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 os valores do 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 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 são convertidos recursivamente 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 valores padrão calculados 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 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 do objeto semelhante a dicionário mapeia o nome da instância da regra para o resultado que seria retornado por
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 a flag --noincompatible_existing_rules_immutable_view
estiver definida, ela 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 pode ser muito cara, especialmente se for chamada em um loop.
exports_files
None
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
|
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 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
|
Sequência de strings ou None ;
O padrão é None Licenças a serem especificadas. |
glob
sequence 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 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
|
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 module_name()O nome do módulo do Bazel associado ao repositório em que este pacote está. Se o pacote for de um repositório definido em WORKSPACE em vez de MODULE.bazel, ele estará vazio. Para repositórios gerados por extensões de módulo, esse é o nome do módulo que hospeda a extensão. É o mesmo que o campo
module.name
mostrado em module_ctx.modules
.
Pode retornar None
.
module_version
string module_version()A versão do módulo do Bazel associada ao repositório em que este pacote está. Se o pacote for de um repositório definido em WORKSPACE em vez de MODULE.bazel, ele estará vazio. Para repositórios gerados por extensões de módulo, essa é a versão do módulo que hospeda a extensão. É o mesmo que o campo
module.version
mostrado em module_ctx.modules
.
Pode retornar None
.
package_group
None
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 em atributos visibility
.
Parâmetros
Parâmetro | Descrição |
---|---|
name
|
required O nome exclusivo dessa 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 package_name()O nome do pacote que está sendo avaliado. Por exemplo, no arquivo BUILD
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 de arquivo BUILD do autor da chamada. Essa função é equivalente à variável PACKAGE_NAME
, que foi descontinuada.
package_relative_label
Label 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 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 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 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 Label for transmitido, ele será retornado como está. |
repository_name
string 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
. Em pacotes no repositório principal, ele será definido como @
. Essa função é equivalente à variável REPOSITORY_NAME
, que foi descontinuada.
select
unknown select(x, no_match_error='')
select()
é a função auxiliar que torna um atributo de regra configurável. Consulte a enciclopédia de builds para mais detalhes.
Parâmetros
Parâmetro | Descrição |
---|---|
x
|
required Um dicionário que mapeia condições de configuração para valores. Cada chave é um rótulo ou uma string de rótulo que identifica uma instância de config_setting ou constraint_value. Consulte a documentação sobre macros para saber quando usar um rótulo em vez de uma string. |
no_match_error
|
O padrão é '' , um erro personalizado opcional para informar se nenhuma condição corresponde. |
subpacotes
sequence 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. É recomendável 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
|
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
|
O padrão é False Se a chamada retornar uma lista vazia, ocorrerá uma falha. 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 "true" permite que essa função tenha sucesso nesse caso. |