Participantes
- 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 desset, 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 de Depsets para ver mais informações.
Todos os elementos (diretos e indiretos) de um conjunto de dados precisam ser do mesmo tipo, conforme recebido pela expressão type(x)
.
Como um conjunto baseado em hash é usado para eliminar cópias durante a iteração, todos os elementos de um depset precisam ser criptografados com hash. No entanto, essa invariante não é verificada atualmente de forma consistente em todos os construtores. Use a sinalização --incompatible_always_check_depset_elements para ativar a verificação consistente. Esse será o comportamento padrão em versões futuras. Consulte o Problema 10313.
Além disso, os elementos precisam ser imutáveis no momento, embora essa restrição seja flexibilizada no futuro.
A ordem do conjunto de dados criado deve ser compatível com a ordem das dependências transitive
. O pedido "default"
é compatível com qualquer outro pedido, e todos os outros só são compatíveis 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 conjunto de dados. |
order
|
o padrão é "default" A estratégia de travessia do novo depset. Consulte aqui os valores possíveis. |
transitive
|
sequência de depsets; ou None ; o padrão é None .Uma lista de depsets com elementos que se tornam elementos indiretos do depset. |
existing_rule
unknown existing_rule(name)Retorna um objeto imutável semelhante a um dict que descreve os atributos de uma regra instanciada no pacote dessa linha de execução, ou
None
se não existir uma instância de regra com esse nome.Aqui, um objeto imutável do tipo dict significa um objeto x
profundamente imutável, que oferece suporte a iteração semelhante a ditado, len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
e x.values()
.
Se a sinalização --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, exceto os privados (cujos nomes não começam com uma letra) e alguns tipos de atributos legados que não podem ser representados. 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 os valores do atributo da seguinte forma:
- Os atributos de tipo str, int e bool são representados no estado em que se encontram.
- 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 deles são convertidos recursivamente da mesma maneira.
- Os valores
select
são retornados com os conteúdos transformados 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, evite usar essa função. Isso torna os arquivos BUILD frágeis e dependem da ordem. Além disso, saiba que ela é sutilmente diferente das duas outras conversões de valores de atributo de regra 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()Retorna um objeto imutável do tipo dict que descreve as regras instanciadas até o momento no pacote dessa linha de execução. Cada entrada do objeto semelhante a um dicionário mapeia o nome da instância da regra para o resultado que seria retornado por
existing_rule(name)
.Aqui, um objeto imutável do tipo dict significa um objeto x
profundamente imutável, que oferece suporte a iteração semelhante a ditado, len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
e x.values()
.
Se a sinalização --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 dependem 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 um loop.
exports_files
None
exports_files(srcs, visibility=None, licenses=None)
Especifica uma lista de arquivos pertencentes a este pacote que são exportados para outros pacotes.
Parâmetros
Parâmetro | Descrição |
---|---|
srcs
|
sequência de strings (obrigatório) A lista de arquivos a serem exportados. |
visibility
|
Sequence ou None ;
o padrão é None É possível especificar uma declaração de visibilidade. 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 é None Licenças a serem especificadas. |
Globo
sequence glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)O Glob retorna uma nova lista mutável e ordenada de cada arquivo no pacote atual que:
- Corresponde a pelo menos um padrão em
include
. - Não corresponde a nenhum dos padrões em
exclude
(o 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
|
Sequence 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 Define se os padrões glob não correspondem a nada. Se "allow_empty" for definido como "False", cada padrão de inclusão individual vai precisar corresponder a algo. Além disso, 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()O nome do módulo do Bazel associado ao repositório em que este pacote está. Se esse pacote for de um repositório definido no Espaço de Trabalho e não de MODULE.bazel, ele vai 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 campo
module.name
visto em module_ctx.modules
.
Poderá haver retorno em None
.
module_version
string module_version()A versão do módulo do Bazel associado ao repositório em que este pacote está. Se esse pacote for de um repositório definido no Espaço de Trabalho e não de MODULE.bazel, ele vai 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 campo
module.version
visto em module_ctx.modules
.
Poderá haver retorno em None
.
package_group
None
package_group(name, packages=[], includes=[])
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
|
sequência de strings. O padrão é [] .Uma enumeração completa de pacotes neste 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 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)Converte a string de entrada em um objeto Label no contexto do pacote que está sendo inicializado, ou seja, o arquivo
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 em (por exemplo) uma função de implementação de regra.
O resultado dessa função é o mesmo valor Label
que seria produzido pela transmissão da string fornecida para um atributo com valor de rótulo de um destino declarado no arquivo BUILD.
Observação sobre o 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 esteja fixado no código 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 diferente do arquivo BUILD ou do arquivo .bzl de chamada. Por esse motivo, as macros externas sempre devem preferir passar objetos Rótulo para macros internas em vez de strings de rótulos.
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 em que a regra ou a extensão de build é chamada. Por exemplo, em pacotes chamados para existência pela estrofe
local_repository(name='local', path=...)
do WORKSPACE, ela é definida como @local
. Nos pacotes no repositório principal, ele estará 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 dict 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 relatado se nenhuma condição corresponder. |
subpacotes
sequence subpackages(include, exclude=[], allow_empty=False)Retorna uma nova lista mutável de cada subpacote direto do pacote atual, independentemente da profundidade do diretório do sistema de arquivos. A lista retornada é classificada e contém os nomes dos subpacotes relativos 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ó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 Indica 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() é supérflua. Se ela for definida como verdadeira, ela será bem-sucedida nesse caso. |