Incluir e Herdar Declarações no Starlark

Em make, uma instrução include pode incluir caminhos de arquivo com variáveis ​​e ignorará arquivos inexistentes quando prefixado com um sinal de menos. O equivalente de configuração do produto é a função inherit-product-if-exists . O Starlark usa instruções de load com arquivos identificados por string literal e, se um arquivo não existir, o Starlark gera 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 de 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, mesmo que apenas um seja executado.

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

Quando as referências de 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 de 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 também o uso de TARGET_PRODUCT seria o ideal.