Minor cleanup in prebuilt_apis

Use ints instead of strings for version comparison.

Bug: 178171189
Test: m
Change-Id: I53d71b138a64b902b3f00adafec5d354630a5e35
This commit is contained in:
Anton Hansson
2021-01-22 15:05:04 +00:00
parent f17b07fc52
commit 370fd0b050
2 changed files with 24 additions and 22 deletions

View File

@@ -15,7 +15,7 @@
package java
import (
"sort"
"strconv"
"strings"
"github.com/google/blueprint/proptools"
@@ -173,39 +173,38 @@ func prebuiltApiFiles(mctx android.LoadHookContext, p *prebuiltApis) {
// construct a map to find out the latest api file path
// for each (<module>, <scope>) pair.
type latestApiInfo struct {
module string
scope string
apiver string
path string
module string
scope string
version int
path string
}
m := make(map[string]latestApiInfo)
// Create filegroups for all (<module>, <scope, <version>) triplets,
// and a "latest" filegroup variant for each (<module>, <scope>) pair
m := make(map[string]latestApiInfo)
for _, f := range files {
// create a filegroup for each api txt file
localPath := strings.TrimPrefix(f, mydir)
module, apiver, scope := parseApiFilePath(mctx, localPath)
createFilegroup(mctx, module, scope, apiver, localPath)
// find the latest apiver
version, err := strconv.Atoi(apiver)
if err != nil {
mctx.ModuleErrorf("Found finalized API files in non-numeric dir %v", apiver)
return
}
key := module + "." + scope
info, ok := m[key]
if !ok {
m[key] = latestApiInfo{module, scope, apiver, localPath}
} else if len(apiver) > len(info.apiver) || (len(apiver) == len(info.apiver) &&
strings.Compare(apiver, info.apiver) > 0) {
info.apiver = apiver
m[key] = latestApiInfo{module, scope, version, localPath}
} else if version > info.version {
info.version = version
info.path = localPath
m[key] = info
}
}
// create filegroups for the latest version of (<module>, <scope>) pairs
// sort the keys in order to make build.ninja stable
keys := make([]string, 0, len(m))
for k := range m {
keys = append(keys, k)
}
sort.Strings(keys)
for _, k := range keys {
// Sort the keys in order to make build.ninja stable
for _, k := range android.SortedStringKeys(m) {
info := m[k]
createFilegroup(mctx, info.module, info.scope, "latest", info.path)
}

View File

@@ -86,8 +86,11 @@ func prebuiltApisFilesForLibs(apiLevels []string, sdkLibs []string) map[string][
for _, lib := range sdkLibs {
for _, scope := range []string{"public", "system", "module-lib", "system-server", "test"} {
fs[fmt.Sprintf("prebuilts/sdk/%s/%s/%s.jar", level, scope, lib)] = nil
fs[fmt.Sprintf("prebuilts/sdk/%s/%s/api/%s.txt", level, scope, lib)] = nil
fs[fmt.Sprintf("prebuilts/sdk/%s/%s/api/%s-removed.txt", level, scope, lib)] = nil
// No finalized API files for "current"
if level != "current" {
fs[fmt.Sprintf("prebuilts/sdk/%s/%s/api/%s.txt", level, scope, lib)] = nil
fs[fmt.Sprintf("prebuilts/sdk/%s/%s/api/%s-removed.txt", level, scope, lib)] = nil
}
}
}
fs[fmt.Sprintf("prebuilts/sdk/%s/public/framework.aidl", level)] = nil