Incluir e herdar instruções no Starlark

No Make, uma instrução include pode incluir caminhos de arquivo com variáveis e ignora arquivos inexistentes quando prefixada com um sinal de menos. O equivalente da configuração do produto é a função inherit-product-if-exists. O Starlark usa instruções load com arquivos identificados por literal de string. Se um arquivo não existe, o Starlark gera um erro.

Para solucionar essa limitação, o conversor do Starlark:

  • encontra todos os makefiles que podem corresponder ao caminho que envolve as variáveis;
  • emite instruções load do Starlark para todos eles;
  • escolhe o correto no momento da execução.

Observe que o código Starlark gerado pode não parecer natural, já que lista todos os caminhos correspondentes, mesmo que apenas um seja executado.

Recomendamos remover as referências variáveis nas instruções include/inherit-product.

Quando as referências não puderem ser evitadas, tente minimizar a parte variável. Exemplo:

MY_DIR := path/to/$(TARGET_PRODUCT)
include $(MY_DIR)/file.mk

Faz com que o conversor gere uma instrução load para cada file.mk na árvore de origem, enquanto

include path/to/$(TARGET_PRODUCT)/file.mk

o restringe a arquivos file.mk em path/to. Obviamente, também remover o uso de TARGET_PRODUCT seria ideal.