summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2025-03-06 19:39:34 -0800
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2025-03-06 19:39:34 -0800
commit42c91b0e8a47827eeef6986b16f35a8a6a63d9a0 (patch)
tree18d45e0e518741723d56436c3c942aed280076c1
parentd47793ff0c48a71ac6da6209e5bbce9b37d3db06 (diff)
parentdd49f4112093d8b35b3083a600b4ee54e3ec157e (diff)
Merge "Propagate installed files of Include_files_of dependencies" into main
-rw-r--r--filesystem/android_device.go38
-rw-r--r--filesystem/filesystem.go35
2 files changed, 48 insertions, 25 deletions
diff --git a/filesystem/android_device.go b/filesystem/android_device.go
index a7aa59684..b1f668d57 100644
--- a/filesystem/android_device.go
+++ b/filesystem/android_device.go
@@ -345,22 +345,32 @@ func insertBeforeExtension(file, insertion string) string {
return strings.TrimSuffix(file, ext) + insertion + ext
}
+func (a *androidDevice) distInstalledFiles(ctx android.ModuleContext) {
+ distInstalledFilesJsonAndTxt := func(installedFiles InstalledFilesStruct) {
+ if installedFiles.Json != nil {
+ ctx.DistForGoal("droidcore-unbundled", installedFiles.Json)
+ }
+ if installedFiles.Txt != nil {
+ ctx.DistForGoal("droidcore-unbundled", installedFiles.Txt)
+ }
+ }
+
+ fsInfoMap := a.getFsInfos(ctx)
+ for _, partition := range android.SortedKeys(fsInfoMap) {
+ // installed-files-*{.txt | .json} is not disted for userdata partition
+ if partition == "userdata" {
+ continue
+ }
+ fsInfo := fsInfoMap[partition]
+ for _, installedFiles := range fsInfo.InstalledFilesDepSet.ToList() {
+ distInstalledFilesJsonAndTxt(installedFiles)
+ }
+ }
+}
+
func (a *androidDevice) distFiles(ctx android.ModuleContext) {
if !ctx.Config().KatiEnabled() && proptools.Bool(a.deviceProps.Main_device) {
- fsInfoMap := a.getFsInfos(ctx)
- for _, partition := range android.SortedKeys(fsInfoMap) {
- // installed-files-*{.txt | .json} is not disted for userdata partition
- if partition == "userdata" {
- continue
- }
- fsInfo := fsInfoMap[partition]
- if fsInfo.InstalledFiles.Json != nil {
- ctx.DistForGoal("droidcore-unbundled", fsInfo.InstalledFiles.Json)
- }
- if fsInfo.InstalledFiles.Txt != nil {
- ctx.DistForGoal("droidcore-unbundled", fsInfo.InstalledFiles.Txt)
- }
- }
+ a.distInstalledFiles(ctx)
namePrefix := ""
if ctx.Config().HasDeviceProduct() {
diff --git a/filesystem/filesystem.go b/filesystem/filesystem.go
index 5b53c06cf..065acbdd2 100644
--- a/filesystem/filesystem.go
+++ b/filesystem/filesystem.go
@@ -30,6 +30,7 @@ import (
"android/soong/linkerconfig"
"github.com/google/blueprint"
+ "github.com/google/blueprint/depset"
"github.com/google/blueprint/proptools"
)
@@ -424,8 +425,8 @@ type FilesystemInfo struct {
FullInstallPaths []FullInstallPathInfo
- // Installed files list
- InstalledFiles InstalledFilesStruct
+ // Installed files dep set of this module and its dependency filesystem modules
+ InstalledFilesDepSet depset.DepSet[InstalledFilesStruct]
// Path to compress hints file for erofs filesystems
// This will be nil for other fileystems like ext4
@@ -543,13 +544,13 @@ func (f *filesystem) ModifyPackagingSpec(ps *android.PackagingSpec) {
}
}
-func buildInstalledFiles(ctx android.ModuleContext, partition string, rootDir android.Path, image android.Path) (txt android.ModuleOutPath, json android.ModuleOutPath) {
+func buildInstalledFiles(ctx android.ModuleContext, partition string, rootDir android.Path, image android.Path) InstalledFilesStruct {
fileName := "installed-files"
if len(partition) > 0 {
fileName += fmt.Sprintf("-%s", partition)
}
- txt = android.PathForModuleOut(ctx, fmt.Sprintf("%s.txt", fileName))
- json = android.PathForModuleOut(ctx, fmt.Sprintf("%s.json", fileName))
+ txt := android.PathForModuleOut(ctx, fmt.Sprintf("%s.txt", fileName))
+ json := android.PathForModuleOut(ctx, fmt.Sprintf("%s.json", fileName))
ctx.Build(pctx, android.BuildParams{
Rule: installedFilesJsonRule,
@@ -568,7 +569,10 @@ func buildInstalledFiles(ctx android.ModuleContext, partition string, rootDir an
Description: "Installed file list txt",
})
- return txt, json
+ return InstalledFilesStruct{
+ Txt: txt,
+ Json: json,
+ }
}
func (f *filesystem) GenerateAndroidBuildActions(ctx android.ModuleContext) {
@@ -660,7 +664,6 @@ func (f *filesystem) GenerateAndroidBuildActions(ctx android.ModuleContext) {
default:
partitionNameForInstalledFiles = f.partitionName()
}
- installedFileTxt, installedFileJson := buildInstalledFiles(ctx, partitionNameForInstalledFiles, rootDir, f.output)
var erofsCompressHints android.Path
if f.properties.Erofs.Compress_hints != nil {
@@ -681,10 +684,11 @@ func (f *filesystem) GenerateAndroidBuildActions(ctx android.ModuleContext) {
BuildImagePropFileDeps: buildImagePropFileDeps,
SpecsForSystemOther: f.systemOtherFiles(ctx),
FullInstallPaths: fullInstallPaths,
- InstalledFiles: InstalledFilesStruct{
- Txt: installedFileTxt,
- Json: installedFileJson,
- },
+ InstalledFilesDepSet: depset.New(
+ depset.POSTORDER,
+ []InstalledFilesStruct{buildInstalledFiles(ctx, partitionNameForInstalledFiles, rootDir, f.output)},
+ includeFilesInstalledFiles(ctx),
+ ),
ErofsCompressHints: erofsCompressHints,
SelinuxFc: f.selinuxFc,
FilesystemConfig: f.generateFilesystemConfig(ctx, rootDir, rebasedDir),
@@ -1194,6 +1198,15 @@ func includeFilesRootDir(ctx android.ModuleContext) (rootDirs android.Paths, par
return rootDirs, partitions
}
+func includeFilesInstalledFiles(ctx android.ModuleContext) (ret []depset.DepSet[InstalledFilesStruct]) {
+ ctx.VisitDirectDepsWithTag(interPartitionInstallDependencyTag, func(m android.Module) {
+ if fsProvider, ok := android.OtherModuleProvider(ctx, m, FilesystemProvider); ok {
+ ret = append(ret, fsProvider.InstalledFilesDepSet)
+ }
+ })
+ return
+}
+
func (f *filesystem) buildCpioImage(
ctx android.ModuleContext,
builder *android.RuleBuilder,