Loading android/variable.go +1 −0 Original line number Diff line number Diff line Loading @@ -612,6 +612,7 @@ type PartitionVariables struct { // Boot image stuff BuildingRamdiskImage bool `json:",omitempty"` ProductBuildBootImage bool `json:",omitempty"` ProductBuildVendorBootImage string `json:",omitempty"` ProductBuildInitBootImage bool `json:",omitempty"` BoardUsesRecoveryAsBoot bool `json:",omitempty"` BoardPrebuiltBootimage string `json:",omitempty"` Loading filesystem/filesystem.go +1 −0 Original line number Diff line number Diff line Loading @@ -710,6 +710,7 @@ var validPartitions = []string{ "odm_dlkm", "system_dlkm", "ramdisk", "vendor_ramdisk", } func (f *filesystem) addMakeBuiltFiles(ctx android.ModuleContext, builder *android.RuleBuilder, rootDir android.Path) { Loading fsgen/boot_imgs.go +47 −0 Original line number Diff line number Diff line Loading @@ -3,7 +3,9 @@ package fsgen import ( "android/soong/android" "android/soong/filesystem" "fmt" "path/filepath" "strconv" "github.com/google/blueprint/proptools" ) Loading Loading @@ -52,6 +54,27 @@ func createBootImage(ctx android.LoadHookContext) bool { return true } func createVendorBootImage(ctx android.LoadHookContext) bool { partitionVariables := ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse bootImageName := generatedModuleNameForPartition(ctx.Config(), "vendor_boot") ctx.CreateModule( filesystem.BootimgFactory, &filesystem.BootimgProperties{ Vendor_boot: proptools.BoolPtr(true), Ramdisk_module: proptools.StringPtr(generatedModuleNameForPartition(ctx.Config(), "vendor_ramdisk")), Header_version: proptools.StringPtr(partitionVariables.BoardBootHeaderVersion), }, &struct { Name *string }{ Name: proptools.StringPtr(bootImageName), }, ) return true } // Returns the equivalent of the BUILDING_BOOT_IMAGE variable in make. Derived from this logic: // https://cs.android.com/android/platform/superproject/main/+/main:build/make/core/board_config.mk;l=458;drc=5b55f926830963c02ab1d2d91e46442f04ba3af0 func buildingBootImage(partitionVars android.PartitionVariables) bool { Loading @@ -76,3 +99,27 @@ func buildingBootImage(partitionVars android.PartitionVariables) bool { return false } // Returns the equivalent of the BUILDING_VENDOR_BOOT_IMAGE variable in make. Derived from this logic: // https://cs.android.com/android/platform/superproject/main/+/main:build/make/core/board_config.mk;l=518;drc=5b55f926830963c02ab1d2d91e46442f04ba3af0 func buildingVendorBootImage(partitionVars android.PartitionVariables) bool { if v, exists := boardBootHeaderVersion(partitionVars); exists && v >= 3 { x := partitionVars.ProductBuildVendorBootImage if x == "" || x == "true" { return true } } return false } func boardBootHeaderVersion(partitionVars android.PartitionVariables) (int, bool) { if len(partitionVars.BoardBootHeaderVersion) == 0 { return 0, false } v, err := strconv.ParseInt(partitionVars.BoardBootHeaderVersion, 10, 32) if err != nil { panic(fmt.Sprintf("BOARD_BOOT_HEADER_VERSION must be an int, got: %q", partitionVars.BoardBootHeaderVersion)) } return int(v), true } fsgen/filesystem_creator.go +27 −6 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ type filesystemCreatorProps struct { Vbmeta_partition_names []string `blueprint:"mutated"` Boot_image string `blueprint:"mutated" android:"path_device_first"` Vendor_boot_image string `blueprint:"mutated" android:"path_device_first"` } type filesystemCreator struct { Loading @@ -74,6 +75,7 @@ func filesystemCreatorFactory() android.Module { } func generatedPartitions(ctx android.LoadHookContext) []string { partitionVars := ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse generatedPartitions := []string{"system"} if ctx.DeviceConfig().SystemExtPath() == "system_ext" { generatedPartitions = append(generatedPartitions, "system_ext") Loading @@ -90,18 +92,21 @@ func generatedPartitions(ctx android.LoadHookContext) []string { if ctx.DeviceConfig().BuildingUserdataImage() && ctx.DeviceConfig().UserdataPath() == "data" { generatedPartitions = append(generatedPartitions, "userdata") } if ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.BuildingSystemDlkmImage { if partitionVars.BuildingSystemDlkmImage { generatedPartitions = append(generatedPartitions, "system_dlkm") } if ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.BuildingVendorDlkmImage { if partitionVars.BuildingVendorDlkmImage { generatedPartitions = append(generatedPartitions, "vendor_dlkm") } if ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.BuildingOdmDlkmImage { if partitionVars.BuildingOdmDlkmImage { generatedPartitions = append(generatedPartitions, "odm_dlkm") } if ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.BuildingRamdiskImage { if partitionVars.BuildingRamdiskImage { generatedPartitions = append(generatedPartitions, "ramdisk") } if buildingVendorBootImage(partitionVars) { generatedPartitions = append(generatedPartitions, "vendor_ramdisk") } return generatedPartitions } Loading @@ -117,13 +122,21 @@ func (f *filesystemCreator) createInternalModules(ctx android.LoadHookContext) { } } if buildingBootImage(ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse) { partitionVars := ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse if buildingBootImage(partitionVars) { if createBootImage(ctx) { f.properties.Boot_image = ":" + generatedModuleNameForPartition(ctx.Config(), "boot") } else { f.properties.Unsupported_partition_types = append(f.properties.Unsupported_partition_types, "boot") } } if buildingVendorBootImage(partitionVars) { if createVendorBootImage(ctx) { f.properties.Vendor_boot_image = ":" + generatedModuleNameForPartition(ctx.Config(), "vendor_boot") } else { f.properties.Unsupported_partition_types = append(f.properties.Unsupported_partition_types, "vendor_boot") } } for _, x := range createVbmetaPartitions(ctx, finalSoongGeneratedPartitions) { f.properties.Vbmeta_module_names = append(f.properties.Vbmeta_module_names, x.moduleName) Loading Loading @@ -699,6 +712,14 @@ func (f *filesystemCreator) GenerateAndroidBuildActions(ctx android.ModuleContex diffTestFiles = append(diffTestFiles, diffTestFile) ctx.Phony("soong_generated_boot_filesystem_test", diffTestFile) } if f.properties.Vendor_boot_image != "" { diffTestFile := android.PathForModuleOut(ctx, "vendor_boot_diff_test.txt") soongBootImg := android.PathForModuleSrc(ctx, f.properties.Boot_image) makeBootImage := android.PathForArbitraryOutput(ctx, fmt.Sprintf("target/product/%s/vendor_boot.img", ctx.Config().DeviceName())) createDiffTest(ctx, diffTestFile, soongBootImg, makeBootImage) diffTestFiles = append(diffTestFiles, diffTestFile) ctx.Phony("soong_generated_vendor_boot_filesystem_test", diffTestFile) } ctx.Phony("soong_generated_filesystem_tests", diffTestFiles...) } Loading fsgen/fsgen_mutators.go +2 −1 Original line number Diff line number Diff line Loading @@ -147,6 +147,7 @@ func createFsGenState(ctx android.LoadHookContext, generatedPrebuiltEtcModuleNam "odm_dlkm-build.prop": defaultDepCandidateProps(ctx.Config()), }, "ramdisk": {}, "vendor_ramdisk": {}, }, fsDepsMutex: sync.Mutex{}, moduleToInstallationProps: map[string]installationProperties{}, Loading Loading
android/variable.go +1 −0 Original line number Diff line number Diff line Loading @@ -612,6 +612,7 @@ type PartitionVariables struct { // Boot image stuff BuildingRamdiskImage bool `json:",omitempty"` ProductBuildBootImage bool `json:",omitempty"` ProductBuildVendorBootImage string `json:",omitempty"` ProductBuildInitBootImage bool `json:",omitempty"` BoardUsesRecoveryAsBoot bool `json:",omitempty"` BoardPrebuiltBootimage string `json:",omitempty"` Loading
filesystem/filesystem.go +1 −0 Original line number Diff line number Diff line Loading @@ -710,6 +710,7 @@ var validPartitions = []string{ "odm_dlkm", "system_dlkm", "ramdisk", "vendor_ramdisk", } func (f *filesystem) addMakeBuiltFiles(ctx android.ModuleContext, builder *android.RuleBuilder, rootDir android.Path) { Loading
fsgen/boot_imgs.go +47 −0 Original line number Diff line number Diff line Loading @@ -3,7 +3,9 @@ package fsgen import ( "android/soong/android" "android/soong/filesystem" "fmt" "path/filepath" "strconv" "github.com/google/blueprint/proptools" ) Loading Loading @@ -52,6 +54,27 @@ func createBootImage(ctx android.LoadHookContext) bool { return true } func createVendorBootImage(ctx android.LoadHookContext) bool { partitionVariables := ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse bootImageName := generatedModuleNameForPartition(ctx.Config(), "vendor_boot") ctx.CreateModule( filesystem.BootimgFactory, &filesystem.BootimgProperties{ Vendor_boot: proptools.BoolPtr(true), Ramdisk_module: proptools.StringPtr(generatedModuleNameForPartition(ctx.Config(), "vendor_ramdisk")), Header_version: proptools.StringPtr(partitionVariables.BoardBootHeaderVersion), }, &struct { Name *string }{ Name: proptools.StringPtr(bootImageName), }, ) return true } // Returns the equivalent of the BUILDING_BOOT_IMAGE variable in make. Derived from this logic: // https://cs.android.com/android/platform/superproject/main/+/main:build/make/core/board_config.mk;l=458;drc=5b55f926830963c02ab1d2d91e46442f04ba3af0 func buildingBootImage(partitionVars android.PartitionVariables) bool { Loading @@ -76,3 +99,27 @@ func buildingBootImage(partitionVars android.PartitionVariables) bool { return false } // Returns the equivalent of the BUILDING_VENDOR_BOOT_IMAGE variable in make. Derived from this logic: // https://cs.android.com/android/platform/superproject/main/+/main:build/make/core/board_config.mk;l=518;drc=5b55f926830963c02ab1d2d91e46442f04ba3af0 func buildingVendorBootImage(partitionVars android.PartitionVariables) bool { if v, exists := boardBootHeaderVersion(partitionVars); exists && v >= 3 { x := partitionVars.ProductBuildVendorBootImage if x == "" || x == "true" { return true } } return false } func boardBootHeaderVersion(partitionVars android.PartitionVariables) (int, bool) { if len(partitionVars.BoardBootHeaderVersion) == 0 { return 0, false } v, err := strconv.ParseInt(partitionVars.BoardBootHeaderVersion, 10, 32) if err != nil { panic(fmt.Sprintf("BOARD_BOOT_HEADER_VERSION must be an int, got: %q", partitionVars.BoardBootHeaderVersion)) } return int(v), true }
fsgen/filesystem_creator.go +27 −6 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ type filesystemCreatorProps struct { Vbmeta_partition_names []string `blueprint:"mutated"` Boot_image string `blueprint:"mutated" android:"path_device_first"` Vendor_boot_image string `blueprint:"mutated" android:"path_device_first"` } type filesystemCreator struct { Loading @@ -74,6 +75,7 @@ func filesystemCreatorFactory() android.Module { } func generatedPartitions(ctx android.LoadHookContext) []string { partitionVars := ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse generatedPartitions := []string{"system"} if ctx.DeviceConfig().SystemExtPath() == "system_ext" { generatedPartitions = append(generatedPartitions, "system_ext") Loading @@ -90,18 +92,21 @@ func generatedPartitions(ctx android.LoadHookContext) []string { if ctx.DeviceConfig().BuildingUserdataImage() && ctx.DeviceConfig().UserdataPath() == "data" { generatedPartitions = append(generatedPartitions, "userdata") } if ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.BuildingSystemDlkmImage { if partitionVars.BuildingSystemDlkmImage { generatedPartitions = append(generatedPartitions, "system_dlkm") } if ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.BuildingVendorDlkmImage { if partitionVars.BuildingVendorDlkmImage { generatedPartitions = append(generatedPartitions, "vendor_dlkm") } if ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.BuildingOdmDlkmImage { if partitionVars.BuildingOdmDlkmImage { generatedPartitions = append(generatedPartitions, "odm_dlkm") } if ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.BuildingRamdiskImage { if partitionVars.BuildingRamdiskImage { generatedPartitions = append(generatedPartitions, "ramdisk") } if buildingVendorBootImage(partitionVars) { generatedPartitions = append(generatedPartitions, "vendor_ramdisk") } return generatedPartitions } Loading @@ -117,13 +122,21 @@ func (f *filesystemCreator) createInternalModules(ctx android.LoadHookContext) { } } if buildingBootImage(ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse) { partitionVars := ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse if buildingBootImage(partitionVars) { if createBootImage(ctx) { f.properties.Boot_image = ":" + generatedModuleNameForPartition(ctx.Config(), "boot") } else { f.properties.Unsupported_partition_types = append(f.properties.Unsupported_partition_types, "boot") } } if buildingVendorBootImage(partitionVars) { if createVendorBootImage(ctx) { f.properties.Vendor_boot_image = ":" + generatedModuleNameForPartition(ctx.Config(), "vendor_boot") } else { f.properties.Unsupported_partition_types = append(f.properties.Unsupported_partition_types, "vendor_boot") } } for _, x := range createVbmetaPartitions(ctx, finalSoongGeneratedPartitions) { f.properties.Vbmeta_module_names = append(f.properties.Vbmeta_module_names, x.moduleName) Loading Loading @@ -699,6 +712,14 @@ func (f *filesystemCreator) GenerateAndroidBuildActions(ctx android.ModuleContex diffTestFiles = append(diffTestFiles, diffTestFile) ctx.Phony("soong_generated_boot_filesystem_test", diffTestFile) } if f.properties.Vendor_boot_image != "" { diffTestFile := android.PathForModuleOut(ctx, "vendor_boot_diff_test.txt") soongBootImg := android.PathForModuleSrc(ctx, f.properties.Boot_image) makeBootImage := android.PathForArbitraryOutput(ctx, fmt.Sprintf("target/product/%s/vendor_boot.img", ctx.Config().DeviceName())) createDiffTest(ctx, diffTestFile, soongBootImg, makeBootImage) diffTestFiles = append(diffTestFiles, diffTestFile) ctx.Phony("soong_generated_vendor_boot_filesystem_test", diffTestFile) } ctx.Phony("soong_generated_filesystem_tests", diffTestFiles...) } Loading
fsgen/fsgen_mutators.go +2 −1 Original line number Diff line number Diff line Loading @@ -147,6 +147,7 @@ func createFsGenState(ctx android.LoadHookContext, generatedPrebuiltEtcModuleNam "odm_dlkm-build.prop": defaultDepCandidateProps(ctx.Config()), }, "ramdisk": {}, "vendor_ramdisk": {}, }, fsDepsMutex: sync.Mutex{}, moduleToInstallationProps: map[string]installationProperties{}, Loading