Revert^2 "Support auto-generating prebuilt_* modules for recovery partition"
Instead of skipping the `PRODUCT_COPY_FILES` entry if the dest file is
in recovery partition.
Test: m soong_generated_recovery_filesystem_test
Bug: 381888358
Change-Id: I2091361a596288b6473764f4586ddf1e4de3ca71
diff --git a/fsgen/prebuilt_etc_modules_gen.go b/fsgen/prebuilt_etc_modules_gen.go
index 83990a6..e028b1d 100644
--- a/fsgen/prebuilt_etc_modules_gen.go
+++ b/fsgen/prebuilt_etc_modules_gen.go
@@ -36,6 +36,7 @@
system_ext map[string][]srcBaseFileInstallBaseFileTuple
product map[string][]srcBaseFileInstallBaseFileTuple
vendor map[string][]srcBaseFileInstallBaseFileTuple
+ recovery map[string][]srcBaseFileInstallBaseFileTuple
}
func newPrebuiltSrcGroupByInstallPartition() *prebuiltSrcGroupByInstallPartition {
@@ -44,6 +45,7 @@
system_ext: map[string][]srcBaseFileInstallBaseFileTuple{},
product: map[string][]srcBaseFileInstallBaseFileTuple{},
vendor: map[string][]srcBaseFileInstallBaseFileTuple{},
+ recovery: map[string][]srcBaseFileInstallBaseFileTuple{},
}
}
@@ -73,6 +75,8 @@
srcMap = srcGroup.product
case "vendor":
srcMap = srcGroup.vendor
+ case "recovery":
+ srcMap = srcGroup.recovery
}
if srcMap != nil {
srcMap[relativeInstallDir] = append(srcMap[relativeInstallDir], srcBaseFileInstallBaseFileTuple{
@@ -128,6 +132,7 @@
// System is intentionally added at the last to consider the scenarios where
// non-system partitions are installed as part of the system partition
partitionToInstallPathList := []partitionToInstallPath{
+ {name: "recovery", installPath: "recovery/root"},
{name: "vendor", installPath: ctx.DeviceConfig().VendorPath()},
{name: "product", installPath: ctx.DeviceConfig().ProductPath()},
{name: "system_ext", installPath: ctx.DeviceConfig().SystemExtPath()},
@@ -155,6 +160,8 @@
Soc_specific *bool
Product_specific *bool
System_ext_specific *bool
+ Recovery *bool
+ Ramdisk *bool
Srcs []string
Dsts []string
@@ -174,6 +181,12 @@
Relative_install_path *string
}
+// Split install_in_root to a separate struct as it is part of rootProperties instead of
+// properties
+type prebuiltInstallInRootProperties struct {
+ Install_in_root *bool
+}
+
var (
etcInstallPathToFactoryList = map[string]android.ModuleFactory{
"": etc.PrebuiltRootFactory,
@@ -246,7 +259,7 @@
return ret, maxLen
}
-func prebuiltEtcModuleProps(moduleName, partition string) prebuiltModuleProperties {
+func prebuiltEtcModuleProps(ctx android.LoadHookContext, moduleName, partition, destDir string) prebuiltModuleProperties {
moduleProps := prebuiltModuleProperties{}
moduleProps.Name = proptools.StringPtr(moduleName)
@@ -258,6 +271,13 @@
moduleProps.Product_specific = proptools.BoolPtr(true)
case "vendor":
moduleProps.Soc_specific = proptools.BoolPtr(true)
+ case "recovery":
+ // To match the logic in modulePartition() in android/paths.go
+ if ctx.DeviceConfig().BoardUsesRecoveryAsBoot() && strings.HasPrefix(destDir, "first_stage_ramdisk") {
+ moduleProps.Ramdisk = proptools.BoolPtr(true)
+ } else {
+ moduleProps.Recovery = proptools.BoolPtr(true)
+ }
}
moduleProps.No_full_install = proptools.BoolPtr(true)
@@ -291,7 +311,7 @@
}
moduleName := generatedPrebuiltEtcModuleName(partition, srcDir, destDir, fileIndex)
- moduleProps := prebuiltEtcModuleProps(moduleName, partition)
+ moduleProps := prebuiltEtcModuleProps(ctx, moduleName, partition, destDir)
modulePropsPtr := &moduleProps
propsList := []interface{}{modulePropsPtr}
@@ -305,6 +325,16 @@
installBaseFiles = append(installBaseFiles, tuple.installBaseFile)
}
+ // Recovery partition-installed modules are installed to `recovery/root/system` by
+ // default (See modulePartition() in android/paths.go). If the destination file
+ // directory is not `recovery/root/system/...`, it should set install_in_root to true
+ // to prevent being installed in `recovery/root/system`.
+ if partition == "recovery" && !strings.HasPrefix(destDir, "system") {
+ propsList = append(propsList, &prebuiltInstallInRootProperties{
+ Install_in_root: proptools.BoolPtr(true),
+ })
+ }
+
// Set appropriate srcs, dsts, and releative_install_path based on
// the source and install file names
if allCopyFileNamesUnchanged {
@@ -350,6 +380,7 @@
ret = append(ret, createPrebuiltEtcModulesForPartition(ctx, "system_ext", srcDir, groupedSource.system_ext)...)
ret = append(ret, createPrebuiltEtcModulesForPartition(ctx, "product", srcDir, groupedSource.product)...)
ret = append(ret, createPrebuiltEtcModulesForPartition(ctx, "vendor", srcDir, groupedSource.vendor)...)
+ ret = append(ret, createPrebuiltEtcModulesForPartition(ctx, "recovery", srcDir, groupedSource.recovery)...)
}
return ret