From 92ccbe2cfbe457089b4364fa9dc165e17562c946 Mon Sep 17 00:00:00 2001 From: Cole Faust Date: Thu, 3 Oct 2024 14:38:37 -0700 Subject: Create soong-generated filesystem diff test Running `m soong_generated_filesystem_tests` will diff the soong-generated system image with the make-generated one. Currently, this test fails, but we can start working on narrowing it down now. Bug: 371351099 Test: m soong_generated_filesystem_tests Change-Id: I6e341607415b3676e758417a587f69c247652c3a --- filesystem/filesystem.go | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'filesystem/filesystem.go') diff --git a/filesystem/filesystem.go b/filesystem/filesystem.go index a26fac7fc..09d8fba5e 100644 --- a/filesystem/filesystem.go +++ b/filesystem/filesystem.go @@ -35,7 +35,7 @@ func init() { } func registerBuildComponents(ctx android.RegistrationContext) { - ctx.RegisterModuleType("android_filesystem", filesystemFactory) + ctx.RegisterModuleType("android_filesystem", FilesystemFactory) ctx.RegisterModuleType("android_filesystem_defaults", filesystemDefaultsFactory) ctx.RegisterModuleType("android_system_image", SystemImageFactory) ctx.RegisterModuleType("avb_add_hash_footer", avbAddHashFooterFactory) @@ -137,6 +137,12 @@ type FilesystemProperties struct { Gen_aconfig_flags_pb *bool Fsverity fsverityProperties + + // If this property is set to true, the filesystem will call ctx.UncheckedModule(), causing + // it to not be built on checkbuilds. Used for the automatic migration from make to soong + // build modules, where we want to emit some not-yet-working filesystems and we don't want them + // to be built. + Unchecked_module *bool `blueprint:"mutated"` } // android_filesystem packages a set of modules and their transitive dependencies into a filesystem @@ -144,7 +150,7 @@ type FilesystemProperties struct { // modules in the filesystem image are built for the target device (i.e. Android, not Linux host). // The modules are placed in the filesystem image just like they are installed to the ordinary // partitions like system.img. For example, cc_library modules are placed under ./lib[64] directory. -func filesystemFactory() android.Module { +func FilesystemFactory() android.Module { module := &filesystem{} module.filterPackagingSpec = module.filterInstallablePackagingSpec initFilesystemModule(module, module) @@ -177,6 +183,13 @@ const ( unknown ) +type FilesystemInfo struct { + // A text file containing the list of paths installed on the partition. + FileListFile android.Path +} + +var FilesystemProvider = blueprint.NewProvider[FilesystemInfo]() + func (f *filesystem) fsType(ctx android.ModuleContext) fsType { typeStr := proptools.StringDefault(f.properties.Type, "ext4") switch typeStr { @@ -227,6 +240,14 @@ func (f *filesystem) GenerateAndroidBuildActions(ctx android.ModuleContext) { f.fileListFile = android.PathForModuleOut(ctx, "fileList").OutputPath android.WriteFileRule(ctx, f.fileListFile, f.installedFilesList()) + + android.SetProvider(ctx, FilesystemProvider, FilesystemInfo{ + FileListFile: f.fileListFile, + }) + + if proptools.Bool(f.properties.Unchecked_module) { + ctx.UncheckedModule() + } } func (f *filesystem) appendToEntry(ctx android.ModuleContext, installedFile android.OutputPath) { -- cgit v1.2.3-59-g8ed1b