Don't use apexName where apexBundleName is expected
With I63f8a1de463011c6e0b97f5f6eee83103e22bc30, a flattened APEX is installed to /system/apex/<apexBundleName> not /system/apex/<apexName>. The change was to be in sync with the non-flattened APEXes that are installed to /system/apex/<apexBundleName>.apex. apexName is from the 'name' property while apexBundleName is from the 'apex_name' property. The two names are mostly the same, but can be different, notably for the ART and the VNDK APEXes. e,g apexName = com.android.art, apexBundleName = com.android.art.release. However, there was a bug in the fix; we haven't updated the path for the flattened APEXes in other places: filecontexts and symlinks. As a result, the files for the APEXes where apexName is different from apexBundleName were incorrectly labeled and caused a boot loop. Fixing the bug. Bug: 140136207 Bug: 149013536 Test: m Test: OVERRIDE_TARGET_FLATTEN_APEX=true m; then inspect the built system.img to verify that /system/apex/com.android.vndk.current/lib/libcrypto.so is correctly labeled as system_lib_file. Change-Id: I4aaf674a5daeabab5ed6e7025c5389821ee9a013
This commit is contained in:
parent
c8626b3c39
commit
be95e6b245
1 changed files with 6 additions and 6 deletions
|
@ -508,13 +508,13 @@ func (a *apexBundle) buildFlattenedApex(ctx android.ModuleContext) {
|
|||
// instead of `android.PathForOutput`) to return the correct path to the flattened
|
||||
// APEX (as its contents is installed by Make, not Soong).
|
||||
factx := flattenedApexContext{ctx}
|
||||
apexName := proptools.StringDefault(a.properties.Apex_name, ctx.ModuleName())
|
||||
a.outputFile = android.PathForModuleInstall(&factx, "apex", apexName)
|
||||
apexBundleName := a.Name()
|
||||
a.outputFile = android.PathForModuleInstall(&factx, "apex", apexBundleName)
|
||||
|
||||
if a.installable() && a.GetOverriddenBy() == "" {
|
||||
installPath := android.PathForModuleInstall(ctx, "apex", apexName)
|
||||
installPath := android.PathForModuleInstall(ctx, "apex", apexBundleName)
|
||||
devicePath := android.InstallPathToOnDevicePath(ctx, installPath)
|
||||
addFlattenedFileContextsInfos(ctx, apexName+":"+devicePath+":"+a.fileContexts.String())
|
||||
addFlattenedFileContextsInfos(ctx, apexBundleName+":"+devicePath+":"+a.fileContexts.String())
|
||||
}
|
||||
a.buildFilesInfo(ctx)
|
||||
}
|
||||
|
@ -550,9 +550,9 @@ func (a *apexBundle) buildFilesInfo(ctx android.ModuleContext) {
|
|||
a.filesInfo = append(a.filesInfo, newApexFile(ctx, copiedPubkey, "apex_pubkey", ".", etc, nil))
|
||||
|
||||
if a.properties.ApexType == flattenedApex {
|
||||
apexName := proptools.StringDefault(a.properties.Apex_name, a.Name())
|
||||
apexBundleName := a.Name()
|
||||
for _, fi := range a.filesInfo {
|
||||
dir := filepath.Join("apex", apexName, fi.installDir)
|
||||
dir := filepath.Join("apex", apexBundleName, fi.installDir)
|
||||
target := ctx.InstallFile(android.PathForModuleInstall(ctx, dir), fi.builtFile.Base(), fi.builtFile)
|
||||
for _, sym := range fi.symlinks {
|
||||
ctx.InstallSymlink(android.PathForModuleInstall(ctx, dir), sym, target)
|
||||
|
|
Loading…
Reference in a new issue