Incluir e herdar instruções no Starlark

Em make, uma instrução include pode incluir caminhos de arquivo com variáveis ​​e irá ignorar arquivos inexistentes quando prefixados com um sinal de menos. O equivalente da configuração do produto é a função inherit-product-if-exists . Starlark usa instruções load com arquivos identificados por string literal e, se um arquivo não existir, Starlark lançará um erro.

Para contornar essa limitação, o conversor Starlark:

  • encontra todos os Makefiles que podem corresponder ao caminho que envolve variáveis
  • emite instruções load Starlark para todos eles
  • escolhe o correto em tempo de execução

Observe que o código Starlark gerado pode parecer artificial, pois lista todos os caminhos correspondentes, embora apenas um seja executado.

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

Quando as referências a variáveis ​​não puderem ser evitadas, tente minimizar a parte variável. Por 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

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