Merge "Create an installation rule to copy vdex to common arch device directory" into main am: acfa26b5ba

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3200722

Change-Id: I25a5681cdec7fa2e105a251503041b38d25cf917
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Spandan Das
2024-08-05 17:34:12 +00:00
committed by Automerger Merge Worker

View File

@@ -943,20 +943,17 @@ func packageFileForTargetImage(ctx android.ModuleContext, image *bootImageVarian
}
for _, install := range image.vdexInstalls {
if image.target.Arch.ArchType.Name != ctx.DeviceConfig().DeviceArch() {
// Note that the vdex files are identical between architectures. If the target image is
// not for the primary architecture create symlinks to share the vdex of the primary
// architecture with the other architectures.
//
// Assuming that the install path has the architecture name with it, replace the
// architecture name with the primary architecture name to find the source vdex file.
installPath, relDir, name := getModuleInstallPathInfo(ctx, install.To)
if name != "" {
srcRelDir := strings.Replace(relDir, image.target.Arch.ArchType.Name, ctx.DeviceConfig().DeviceArch(), 1)
ctx.InstallSymlink(installPath.Join(ctx, relDir), name, installPath.Join(ctx, srcRelDir, name))
}
} else {
packageFile(ctx, install)
installPath, relDir, name := getModuleInstallPathInfo(ctx, install.To)
if name == "" {
continue
}
// Note that the vdex files are identical between architectures. Copy the vdex to a no arch directory
// and create symlinks for both the primary and secondary arches.
ctx.InstallSymlink(installPath.Join(ctx, relDir), name, installPath.Join(ctx, "framework", name))
if image.target.Arch.ArchType.Name == ctx.DeviceConfig().DeviceArch() {
// Copy the vdex from the primary arch to the no-arch directory
// e.g. /system/framework/$bootjar.vdex
ctx.InstallFile(installPath.Join(ctx, "framework"), name, install.From)
}
}
}