Loading apex/apex.go +13 −2 Original line number Diff line number Diff line Loading @@ -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 } Loading Loading @@ -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 } Loading apex/apex_test.go +31 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading
apex/apex.go +13 −2 Original line number Diff line number Diff line Loading @@ -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 } Loading Loading @@ -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 } Loading
apex/apex_test.go +31 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading