Estratégia de configuração do Bazel em 2021

Reportar um problema Ver a fonte Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Última verificação: 25/01/2021 (histórico de atualizações)

Ponto de contato:gregestren

Discussão:Plano de configurabilidade: discussão

Roteiros anteriores

  • 2020 (com revisão de fim de ano)
  • 2019 (com revisão de fim de ano)
  • 2018

Meta

O $ bazel build //:all simplesmente funciona em qualquer projeto e plataforma.

  • Os builds não exigem flags de linha de comando.
  • Cada destino usa automaticamente as configurações corretas (por exemplo, android_binary usa o NDK certo).
  • É fácil criar para várias plataformas.
  • As builds são bem dimensionadas, principalmente em relação ao tamanho do gráfico e ao cache de ações.

Também oferecemos suporte a cquery, Starlark configuration, e select().

Roteiro

As datas são aproximadas com base na nossa melhor compreensão da complexidade do problema e da disponibilidade do desenvolvedor. Em 2021, vamos concentrar mais esforços em menos projetos por vez. Só vamos definir ETAs para trabalhos ativamente priorizados para manter as expectativas precisas.

Plataformas

3º trimestre de 2021As regras do Android usam a nova API platforms EM ANDAMENTO (#11749)

  • Essa é nossa principal prioridade para o início de 2021.

3º trimestre de 2021: suporte a builds para várias plataformas de execução EM ANDAMENTO (#11748)

Em pausaAs regras de C++ usam a nova API platformsfall EM ANDAMENTO (#6516)

  • Isso é bloqueado em plataformas Android. Podemos ativar isso com uma simples inversão de flag.

PausadoDestinos multiplataforma NÃO INICIADO

  • Permitir que destinos declarem que precisam ser criados para várias plataformas
  • Listado aqui por solicitação do usuário

pausadoDescontinuar e remover --cpu e flags relacionadas NÃO INICIADO

  • Essa é uma meta ambiciosa que resulta da migração de todas as regras para plataformas.

Eficiência

2021Um modo experimental do Bazel armazena em cache a compilação Java multiplataforma EM ANDAMENTO (#6526)

  • Melhora a velocidade de build multiplataforma
  • Alocação insuficiente, então o progresso é lento