Move apex module installation into Soong

Move apex module installation rules into Soong by overriding
InstallBypassMake.

Soong installs don't support post install commands, so move the
symlinks into separate rules and add dependencies on them.

Bug: 204136549
Test: m checkbuild
Change-Id: If65d283abc86f18ad266da0bf16fe95971a0bf9c
This commit is contained in:
Colin Cross
2021-11-04 12:01:18 -07:00
parent fa9bfcd0d2
commit e3d156a622
5 changed files with 95 additions and 93 deletions

View File

@@ -399,14 +399,14 @@ type apexBundle struct {
// vendor/google/build/build_unbundled_mainline_module.sh for more detail.
bundleModuleFile android.WritablePath
// Target path to install this APEX. Usually out/target/product/<device>/<partition>/apex.
// Target directory to install this APEX. Usually out/target/product/<device>/<partition>/apex.
installDir android.InstallPath
// List of commands to create symlinks for backward compatibility. These commands will be
// attached as LOCAL_POST_INSTALL_CMD to apex package itself (for unflattened build) or
// apex_manifest (for flattened build) so that compat symlinks are always installed
// regardless of TARGET_FLATTEN_APEX setting.
compatSymlinks []string
// Path where this APEX was installed.
installedFile android.InstallPath
// Installed locations of symlinks for backward compatibility.
compatSymlinks android.InstallPaths
// Text file having the list of individual files that are included in this APEX. Used for
// debugging purpose.
@@ -431,6 +431,10 @@ type apexBundle struct {
modulePaths []string
}
func (*apexBundle) InstallBypassMake() bool {
return true
}
// apexFileClass represents a type of file that can be included in APEX.
type apexFileClass int
@@ -2086,7 +2090,9 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) {
a.linkToSystemLib = false
}
a.compatSymlinks = makeCompatSymlinks(a.BaseModuleName(), ctx)
if a.properties.ApexType != zipApex {
a.compatSymlinks = makeCompatSymlinks(a.BaseModuleName(), ctx, a.primaryApexType)
}
////////////////////////////////////////////////////////////////////////////////////////////
// 4) generate the build rules to create the APEX. This is done in builder.go.