From 4fd7e741405494160b367033fc9164361e917b64 Mon Sep 17 00:00:00 2001 From: Alix Espino Date: Fri, 24 Feb 2023 14:46:43 +0000 Subject: [PATCH] Revert^2 "refactor of api_levels map for soong injection" a865f4e905b49620d6634bc3b3cf897d91f5e114 Change-Id: Ifea020ac83725df7131773ca587c56931f5cdf03 --- android/api_levels.go | 84 +++++++++++++++--------------------------- bp2build/conversion.go | 1 + starlark_fmt/format.go | 11 ++++++ 3 files changed, 42 insertions(+), 54 deletions(-) diff --git a/android/api_levels.go b/android/api_levels.go index bf7b31736..6d7552ff7 100644 --- a/android/api_levels.go +++ b/android/api_levels.go @@ -302,31 +302,35 @@ func GetApiLevelsJson(ctx PathContext) WritablePath { return PathForOutput(ctx, "api_levels.json") } +func getApiLevelsMapReleasedVersions() map[string]int { + return map[string]int{ + "G": 9, + "I": 14, + "J": 16, + "J-MR1": 17, + "J-MR2": 18, + "K": 19, + "L": 21, + "L-MR1": 22, + "M": 23, + "N": 24, + "N-MR1": 25, + "O": 26, + "O-MR1": 27, + "P": 28, + "Q": 29, + "R": 30, + "S": 31, + "S-V2": 32, + "Tiramisu": 33, + } +} + var finalCodenamesMapKey = NewOnceKey("FinalCodenamesMap") func getFinalCodenamesMap(config Config) map[string]int { return config.Once(finalCodenamesMapKey, func() interface{} { - apiLevelsMap := map[string]int{ - "G": 9, - "I": 14, - "J": 16, - "J-MR1": 17, - "J-MR2": 18, - "K": 19, - "L": 21, - "L-MR1": 22, - "M": 23, - "N": 24, - "N-MR1": 25, - "O": 26, - "O-MR1": 27, - "P": 28, - "Q": 29, - "R": 30, - "S": 31, - "S-V2": 32, - "Tiramisu": 33, - } + apiLevelsMap := getApiLevelsMapReleasedVersions() // TODO: Differentiate "current" and "future". // The code base calls it FutureApiLevel, but the spelling is "current", @@ -349,29 +353,10 @@ func getFinalCodenamesMap(config Config) map[string]int { var apiLevelsMapKey = NewOnceKey("ApiLevelsMap") +// ApiLevelsMap has entries for preview API levels func GetApiLevelsMap(config Config) map[string]int { return config.Once(apiLevelsMapKey, func() interface{} { - apiLevelsMap := map[string]int{ - "G": 9, - "I": 14, - "J": 16, - "J-MR1": 17, - "J-MR2": 18, - "K": 19, - "L": 21, - "L-MR1": 22, - "M": 23, - "N": 24, - "N-MR1": 25, - "O": 26, - "O-MR1": 27, - "P": 28, - "Q": 29, - "R": 30, - "S": 31, - "S-V2": 32, - "Tiramisu": 33, - } + apiLevelsMap := getApiLevelsMapReleasedVersions() for i, codename := range config.PlatformVersionActiveCodenames() { apiLevelsMap[codename] = previewAPILevelBase + i } @@ -386,20 +371,11 @@ func (a *apiLevelsSingleton) GenerateBuildActions(ctx SingletonContext) { createApiLevelsJson(ctx, apiLevelsJson, apiLevelsMap) } -func printApiLevelsStarlarkDict(config Config) string { - apiLevelsMap := GetApiLevelsMap(config) - valDict := make(map[string]string, len(apiLevelsMap)) - for k, v := range apiLevelsMap { - valDict[k] = strconv.Itoa(v) - } - return starlark_fmt.PrintDict(valDict, 0) -} - func StarlarkApiLevelConfigs(config Config) string { return fmt.Sprintf(bazel.GeneratedBazelFileWarning+` -_api_levels = %s +_api_levels_released_versions = %s -api_levels = _api_levels -`, printApiLevelsStarlarkDict(config), +api_levels_released_versions = _api_levels_released_versions +`, starlark_fmt.PrintStringIntDict(getApiLevelsMapReleasedVersions(), 0), ) } diff --git a/bp2build/conversion.go b/bp2build/conversion.go index 73df67555..47cd2b408 100644 --- a/bp2build/conversion.go +++ b/bp2build/conversion.go @@ -59,6 +59,7 @@ func soongInjectionFiles(cfg android.Config, metrics CodegenMetrics) ([]BazelFil return nil, err } files = append(files, newFile("api_levels", GeneratedBuildFileName, `exports_files(["api_levels.json"])`)) + // TODO(b/269691302) value of apiLevelsContent is product variable dependent and should be avoided for soong injection files = append(files, newFile("api_levels", "api_levels.json", string(apiLevelsContent))) files = append(files, newFile("api_levels", "api_levels.bzl", android.StarlarkApiLevelConfigs(cfg))) diff --git a/starlark_fmt/format.go b/starlark_fmt/format.go index 3e51fa14c..064fc2169 100644 --- a/starlark_fmt/format.go +++ b/starlark_fmt/format.go @@ -17,6 +17,7 @@ package starlark_fmt import ( "fmt" "sort" + "strconv" "strings" ) @@ -84,6 +85,16 @@ func PrintBoolDict(dict map[string]bool, indentLevel int) string { return PrintDict(formattedValueDict, indentLevel) } +// PrintStringIntDict returns a Starlark-compatible string formatted as dictionary with +// string keys and int values. +func PrintStringIntDict(dict map[string]int, indentLevel int) string { + valDict := make(map[string]string, len(dict)) + for k, v := range dict { + valDict[k] = strconv.Itoa(v) + } + return PrintDict(valDict, indentLevel) +} + // PrintDict returns a starlark-compatible string containing a dictionary with string keys and // values printed with no additional formatting. func PrintDict(dict map[string]string, indentLevel int) string {