Merge "Rename vndk apex according to vndk version"

This commit is contained in:
Treehugger Robot
2019-10-07 04:44:45 +00:00
committed by Gerrit Code Review
2 changed files with 44 additions and 2 deletions

View File

@@ -222,12 +222,14 @@ func apexVndkGatherMutator(mctx android.TopDownMutatorContext) {
if ab.IsNativeBridgeSupported() {
mctx.PropertyErrorf("native_bridge_supported", "%q doesn't support native bridge binary.", mctx.ModuleType())
}
vndkVersion := proptools.StringDefault(ab.vndkProperties.Vndk_version, mctx.DeviceConfig().PlatformVndkVersion())
vndkVersion := proptools.String(ab.vndkProperties.Vndk_version)
vndkApexListMutex.Lock()
defer vndkApexListMutex.Unlock()
vndkApexList := vndkApexList(mctx.Config())
if other, ok := vndkApexList[vndkVersion]; ok {
mctx.PropertyErrorf("vndk_version", "%v is already defined in %q", vndkVersion, other.Name())
mctx.PropertyErrorf("vndk_version", "%v is already defined in %q", vndkVersion, other.BaseModuleName())
}
vndkApexList[vndkVersion] = ab
}
@@ -1801,6 +1803,15 @@ func vndkApexBundleFactory() android.Module {
}{
proptools.StringPtr("both"),
})
vndkVersion := proptools.StringDefault(bundle.vndkProperties.Vndk_version, "current")
if vndkVersion == "current" {
vndkVersion = ctx.DeviceConfig().PlatformVndkVersion()
bundle.vndkProperties.Vndk_version = proptools.StringPtr(vndkVersion)
}
// Ensure VNDK APEX mount point is formatted as com.android.vndk.v###
bundle.properties.Apex_name = proptools.StringPtr("com.android.vndk.v" + vndkVersion)
})
return bundle
}

View File

@@ -1442,6 +1442,37 @@ func TestVndkApexErrorWithDuplicateVersion(t *testing.T) {
}))
}
func TestVndkApexNameRule(t *testing.T) {
ctx, _ := testApex(t, `
apex_vndk {
name: "myapex",
key: "myapex.key",
file_contexts: "myapex",
}
apex_vndk {
name: "myapex_v28",
key: "myapex.key",
file_contexts: "myapex",
vndk_version: "28",
}
apex_key {
name: "myapex.key",
public_key: "testkey.avbpubkey",
private_key: "testkey.pem",
}`)
assertApexName := func(expected, moduleName string) {
bundle := ctx.ModuleForTests(moduleName, "android_common_"+moduleName).Module().(*apexBundle)
actual := proptools.String(bundle.properties.Apex_name)
if !reflect.DeepEqual(actual, expected) {
t.Errorf("Got '%v', expected '%v'", actual, expected)
}
}
assertApexName("com.android.vndk.vVER", "myapex")
assertApexName("com.android.vndk.v28", "myapex_v28")
}
func TestVndkApexSkipsNativeBridgeSupportedModules(t *testing.T) {
ctx, _ := testApex(t, `
apex_vndk {