Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2c17b256 authored by Cole Faust's avatar Cole Faust Committed by Gerrit Code Review
Browse files

Merge "Build ramdisk with soong" into main

parents 79a35839 76a6e959
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1382,6 +1382,8 @@ func (m *ModuleBase) PartitionTag(config DeviceConfig) string {
		if config.SystemExtPath() == "system_ext" {
			partition = "system_ext"
		}
	} else if m.InstallInRamdisk() {
		partition = "ramdisk"
	}
	return partition
}
+11 −1
Original line number Diff line number Diff line
@@ -606,10 +606,20 @@ type PartitionVariables struct {
	BoardExt4ShareDupBlocks        string `json:",omitempty"`
	BoardFlashLogicalBlockSize     string `json:",omitempty"`
	BoardFlashEraseBlockSize       string `json:",omitempty"`
	BoardUsesRecoveryAsBoot        bool   `json:",omitempty"`
	ProductUseDynamicPartitionSize bool   `json:",omitempty"`
	CopyImagesForTargetFilesZip    bool   `json:",omitempty"`

	// Boot image stuff
	ProductBuildBootImage           bool   `json:",omitempty"`
	ProductBuildInitBootImage       bool   `json:",omitempty"`
	BoardUsesRecoveryAsBoot         bool   `json:",omitempty"`
	BoardPrebuiltBootimage          string `json:",omitempty"`
	BoardPrebuiltInitBootimage      string `json:",omitempty"`
	BoardBootimagePartitionSize     string `json:",omitempty"`
	BoardInitBootimagePartitionSize string `json:",omitempty"`
	BoardBootHeaderVersion          string `json:",omitempty"`

	// Avb (android verified boot) stuff
	BoardAvbEnable          bool                                `json:",omitempty"`
	BoardAvbAlgorithm       string                              `json:",omitempty"`
	BoardAvbKeyPath         string                              `json:",omitempty"`
+7 −2
Original line number Diff line number Diff line
@@ -292,10 +292,14 @@ func (f *filesystem) partitionName() string {
func (f *filesystem) FilterPackagingSpec(ps android.PackagingSpec) bool {
	// Filesystem module respects the installation semantic. A PackagingSpec from a module with
	// IsSkipInstall() is skipped.
	if ps.SkipInstall() {
		return false
	}
	if proptools.Bool(f.properties.Is_auto_generated) { // TODO (spandandas): Remove this.
		return !ps.SkipInstall() && (ps.Partition() == f.PartitionType())
		pt := f.PartitionType()
		return pt == "ramdisk" || ps.Partition() == pt
	}
	return !ps.SkipInstall()
	return true
}

var pctx = android.NewPackageContext("android/soong/filesystem")
@@ -664,6 +668,7 @@ var validPartitions = []string{
	"vendor_dlkm",
	"odm_dlkm",
	"system_dlkm",
	"ramdisk",
}

func (f *filesystem) addMakeBuiltFiles(ctx android.ModuleContext, builder *android.RuleBuilder, rootDir android.Path) {
+12 −5
Original line number Diff line number Diff line
@@ -421,13 +421,20 @@ func generateFsProps(ctx android.EarlyModuleContext, partitionType string) (*fil
	fsProps := &filesystem.FilesystemProperties{}

	partitionVars := ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse
	specificPartitionVars := partitionVars.PartitionQualifiedVariables[partitionType]

	// BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE
	fsType := specificPartitionVars.BoardFileSystemType
	var specificPartitionVars android.PartitionQualifiedVariablesType
	var boardAvbEnable bool
	var fsType string
	if strings.Contains(partitionType, "ramdisk") {
		fsType = "compressed_cpio"
	} else {
		specificPartitionVars = partitionVars.PartitionQualifiedVariables[partitionType]
		boardAvbEnable = partitionVars.BoardAvbEnable
		fsType = specificPartitionVars.BoardFileSystemType
	}
	if fsType == "" {
		fsType = "ext4" //default
	}

	fsProps.Type = proptools.StringPtr(fsType)
	if filesystem.GetFsTypeFromString(ctx, *fsProps.Type).IsUnknown() {
		// Currently the android_filesystem module type only supports a handful of FS types like ext4, erofs
@@ -439,7 +446,7 @@ func generateFsProps(ctx android.EarlyModuleContext, partitionType string) (*fil
	fsProps.Unchecked_module = proptools.BoolPtr(true)

	// BOARD_AVB_ENABLE
	fsProps.Use_avb = proptools.BoolPtr(partitionVars.BoardAvbEnable)
	fsProps.Use_avb = proptools.BoolPtr(boardAvbEnable)
	// BOARD_AVB_KEY_PATH
	fsProps.Avb_private_key = proptools.StringPtr(specificPartitionVars.BoardAvbKeyPath)
	// BOARD_AVB_ALGORITHM
+11 −8
Original line number Diff line number Diff line
@@ -80,7 +80,7 @@ func defaultDepCandidateProps(config android.Config) *depCandidateProps {
}

func generatedPartitions(ctx android.LoadHookContext) []string {
	generatedPartitions := []string{"system"}
	generatedPartitions := []string{"system", "ramdisk"}
	if ctx.DeviceConfig().SystemExtPath() == "system_ext" {
		generatedPartitions = append(generatedPartitions, "system_ext")
	}
@@ -171,6 +171,7 @@ func createFsGenState(ctx android.LoadHookContext, generatedPrebuiltEtcModuleNam
					"fs_config_files_odm_dlkm": defaultDepCandidateProps(ctx.Config()),
					"odm_dlkm-build.prop":      defaultDepCandidateProps(ctx.Config()),
				},
				"ramdisk": {},
			},
			fsDepsMutex:               sync.Mutex{},
			moduleToInstallationProps: map[string]installationProperties{},
@@ -205,29 +206,31 @@ func appendDepIfAppropriate(mctx android.BottomUpMutatorContext, deps *multilibD
}

func collectDepsMutator(mctx android.BottomUpMutatorContext) {
	m := mctx.Module()
	if m.Target().Os.Class != android.Device {
		return
	}
	fsGenState := mctx.Config().Get(fsGenStateOnceKey).(*FsGenState)

	m := mctx.Module()
	if m.Target().Os.Class == android.Device && slices.Contains(fsGenState.depCandidates, mctx.ModuleName()) {
		installPartition := m.PartitionTag(mctx.DeviceConfig())
	fsGenState.fsDepsMutex.Lock()
	defer fsGenState.fsDepsMutex.Unlock()

	if slices.Contains(fsGenState.depCandidates, mctx.ModuleName()) {
		installPartition := m.PartitionTag(mctx.DeviceConfig())
		// Only add the module as dependency when:
		// - its enabled
		// - its namespace is included in PRODUCT_SOONG_NAMESPACES
		if m.Enabled(mctx) && m.ExportedToMake() {
			appendDepIfAppropriate(mctx, fsGenState.fsDeps[installPartition], installPartition)
		}
		fsGenState.fsDepsMutex.Unlock()
	}
	// store the map of module to (required,overrides) even if the module is not in PRODUCT_PACKAGES.
	// the module might be installed transitively.
	if m.Target().Os.Class == android.Device && m.Enabled(mctx) && m.ExportedToMake() {
		fsGenState.fsDepsMutex.Lock()
	if m.Enabled(mctx) && m.ExportedToMake() {
		fsGenState.moduleToInstallationProps[m.Name()] = installationProperties{
			Required:  m.RequiredModuleNames(mctx),
			Overrides: m.Overrides(),
		}
		fsGenState.fsDepsMutex.Unlock()
	}
}

Loading