Métodos disponíveis em arquivos BUILD. Consulte também a Enciclopédia do build para conferir funções e regras de build extras, que também podem ser usadas em arquivos BUILD.
Membros
- depset
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package_group
- package_name
- package_relative_label
- repository_name
- Selecione
- Subpacotes
Depset
depset depset(direct=None, order="default", *, transitive=None)
direct
é uma lista de elementos diretos do componente, e o parâmetro transitive
é uma lista de dependências cujos elementos se tornam elementos indiretos do ambiente criado. A ordem em que os elementos são retornados quando o dispositivo é convertido em uma lista é especificada pelo parâmetro order
. Consulte a Visão geral de escopos para mais informações.
Todos os elementos (diretos e indiretos) de um dispositivo 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 passíveis de hash. No entanto, essa invariante não é verificada de forma consistente em todos os construtores. Usar a flag --incompatible_always_check_depset_elementos para ativar a verificação consistente; esse será o comportamento padrão em versões futuras. consulte o problema 10313 (link em inglês).
Além disso, os elementos precisam ser imutáveis atualmente, embora essa restrição seja flexibilizada no futuro.
A ordem da desativação criada precisa ser compatível com a ordem das dependências de transitive
. O pedido de "default"
é compatível com qualquer outro pedido. Todos os outros pedidos são compatíveis somente com ele mesmo.
Parâmetros
Parâmetro | Descrição |
---|---|
direct
|
sequência ou None
o padrão é None Uma lista de elementos diretos de um dispositivo. |
order
|
o padrão é "default" Estratégia de travessia para a nova implantação. Veja os valores possíveis aqui. |
transitive
|
sequência de depsets; ou None ;
o padrão é None Uma lista de dispositivos com elementos que se tornarão elementos indiretos deles. |
existing_rule
unknown existing_rule(name)
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 particulares (com nomes que não começam com uma letra) e alguns tipos de atributos legados irrepresentáveis. Além disso, o dict contém entradas para o name
e o kind
da instância da regra (por exemplo, 'cc_binary'
).
Os valores do resultado representam valores de atributo da seguinte maneira:
- Os 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, saiba que ela difere sutilmente das duas outras conversões de valores de atributos de regras do formato interno para Starlark: uma usada por padrões computados e outra usada por ctx.attr.foo
.
Parâmetros
Parâmetro | Descrição |
---|---|
name
|
obrigatório O nome do destino. |
existing_rules
unknown existing_rules()
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
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 é None Uma declaração de visibilidade pode ser especificada. Os arquivos serão 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. |
massa
sequence glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)
- Corresponde a pelo menos um padrão em
include
. - Não corresponde a nenhum padrão 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
|
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 sinalização para excluir diretórios ou não. |
allow_empty
|
o padrão é unbound 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. |
module_name
string module_name()
module.name
visto em module_ctx.modules
.
Pode retornar None
.
module_version
string module_version()
module.version
visto em module_ctx.modules
.
Pode retornar None
.
package_group
None
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 dos pacotes neste grupo. |
includes
|
sequência de strings
o padrão é [] Outros grupos de pacotes incluídos neste. |
package_name
string package_name()
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 package_relative_label(input)
BUILD
em que a macro atual está sendo executada). Se a entrada já for um Label
, ela será retornada inalterada.Esta função só pode ser chamada durante a avaliação de um arquivo BUILD e as macros que ele chama direta ou indiretamente. ele pode não ser chamado em (por exemplo) uma função de implementação de regra.
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 a chamou, não o pacote do arquivo BUILD
. Use Label()
quando precisar se referir a um destino fixo que está fixado no código da 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 diferente do arquivo BUILD ou do 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; ou Rótulo;
obrigatório A string do rótulo de entrada ou o objeto de rótulo. Se um objeto Rótulo for passado, será retornado no estado em que se encontra. |
repository_name
string repository_name()
local_repository(name='local', path=...)
do ESPAÇO DE TRABALHO, ela será definida como @local
. Nos pacotes no repositório principal, ele será definido como @
. Essa função é equivalente à variável descontinuada REPOSITORY_NAME
.
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 criação para mais detalhes.
Parâmetros
Parâmetro | Descrição |
---|---|
x
|
obrigatório Um dicionário que mapeia condições de configuração para valores. Cada chave é um Label ou uma string de rótulo que identifica uma instância "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 é '' Erro personalizado opcional a ser informado se nenhuma condição corresponder. |
subpacotes
sequence 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
|
o padrão é False 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. Se for definido como verdadeiro, a função será executada com sucesso nesse caso. |