platform_build_soong/starlark_import
Cole Faust f8231dd0ea Platform mapping-based product config
This allows us to set product variables as build settings instead
of loading them from a target's provider, which further allows us
to read product config variables in transitions.

Bug: 287539062
Bug: 269577299
Test: Presubmits
Change-Id: I8497703f706162572ceb3486240e1eb02a37f5f6
2023-07-17 16:27:08 -07:00
..
Android.bp Load starlark files from soong 2023-04-26 17:18:19 -07:00
README.md Load starlark files from soong 2023-04-26 17:18:19 -07:00
starlark_import.go Load starlark files from soong 2023-04-26 17:18:19 -07:00
starlark_import_test.go Load starlark files from soong 2023-04-26 17:18:19 -07:00
unmarshal.go Platform mapping-based product config 2023-07-17 16:27:08 -07:00
unmarshal_test.go Platform mapping-based product config 2023-07-17 16:27:08 -07:00

starlark_import package

This allows soong to read constant information from starlark files. At package initialization time, soong will read build/bazel/constants_exported_to_soong.bzl, and then make the variables from that file available via starlark_import.GetStarlarkValue(). So to import a new variable, it must be added to constants_exported_to_soong.bzl and then it can be accessed by name.

Only constant information can be read, since this is not a full bazel execution but a standalone starlark interpreter. This means you can't use bazel contructs like rule, provider, select, glob, etc.

All starlark files that were loaded must be added as ninja deps that cause soong to rerun. The loaded files can be retrieved via starlark_import.GetNinjaDeps().