Menyertakan dan Mewarisi Pernyataan di Starlark

Dalam make, pernyataan include dapat menyertakan jalur file dengan variabel dan akan mengabaikan file yang tidak ada saat diawali dengan tanda minus. Setara konfigurasi produk adalah fungsi inherit-product-if-exists . Starlark menggunakan pernyataan load dengan file yang diidentifikasi oleh string literal, dan jika file tidak ada, Starlark melempar kesalahan.

Untuk mengatasi batasan ini, konverter Starlark:

  • menemukan semua Makefile yang cocok dengan jalur yang melibatkan variabel
  • memancarkan pernyataan load Starlark untuk semuanya
  • memilih yang benar saat runtime

Perhatikan bahwa kode Starlark yang dihasilkan mungkin terlihat tidak wajar karena mencantumkan semua jalur yang cocok meskipun hanya satu yang akan dieksekusi.

Sebaiknya hapus referensi variabel dalam pernyataan include / inherit-product .

Ketika referensi variabel tidak dapat dihindari, cobalah untuk meminimalkan bagian variabel. Sebagai contoh:

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

menyebabkan konverter menghasilkan pernyataan load untuk setiap file.mk di pohon sumber, sedangkan

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

membatasinya ke file file.mk di bawah path/to . Tentu saja, menghapus penggunaan TARGET_PRODUCT juga ideal.