From 1d4e76c0f8deecc0e887b4462eb746cd1f3ce4e7 Mon Sep 17 00:00:00 2001 From: Cole Faust Date: Tue, 26 Nov 2024 14:15:29 -0800 Subject: Add missing root dirs/symlinks to soong-built system image These root dirs and symlinks are normally set up in a rather hardcoded fashion in create_root_structure.mk. In the handwritten soong-built images, they are listed out explicitly, so do the same thing in the autogenerated images. The file list diff test didn't catch them because the soong file list only considers stuff under the rebased_dir, and in make the root dir is passed to build_image.py separately and only the system staging dir is considered for the file list. Bug: 381120092 Test: Build make/soong system images, mount, diff root directory Change-Id: I5f4919b92715369c54ca25cfe4815175825650c6 --- fsgen/filesystem_creator.go | 106 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) (limited to 'fsgen/filesystem_creator.go') diff --git a/fsgen/filesystem_creator.go b/fsgen/filesystem_creator.go index e8b0a4fb7..caf92e2be 100644 --- a/fsgen/filesystem_creator.go +++ b/fsgen/filesystem_creator.go @@ -222,8 +222,79 @@ func partitionSpecificFsProps(fsProps *filesystem.FilesystemProperties, partitio "framework/oat/*/*", // framework/oat/{arch} } fsProps.Fsverity.Libs = []string{":framework-res{.export-package.apk}"} + // Most of the symlinks and directories listed here originate from create_root_structure.mk, + // but the handwritten generic system image also recreates them: + // https://cs.android.com/android/platform/superproject/main/+/main:build/make/target/product/generic/Android.bp;l=33;drc=db08311f1b6ef6cb0a4fbcc6263b89849360ce04 // TODO(b/377734331): only generate the symlinks if the relevant partitions exist fsProps.Symlinks = []filesystem.SymlinkDefinition{ + filesystem.SymlinkDefinition{ + Target: proptools.StringPtr("/system/bin/init"), + Name: proptools.StringPtr("init"), + }, + filesystem.SymlinkDefinition{ + Target: proptools.StringPtr("/system/etc"), + Name: proptools.StringPtr("etc"), + }, + filesystem.SymlinkDefinition{ + Target: proptools.StringPtr("/system/bin"), + Name: proptools.StringPtr("bin"), + }, + filesystem.SymlinkDefinition{ + Target: proptools.StringPtr("/data/user_de/0/com.android.shell/files/bugreports"), + Name: proptools.StringPtr("bugreports"), + }, + filesystem.SymlinkDefinition{ + Target: proptools.StringPtr("/sys/kernel/debug"), + Name: proptools.StringPtr("d"), + }, + filesystem.SymlinkDefinition{ + Target: proptools.StringPtr("/storage/self/primary"), + Name: proptools.StringPtr("sdcard"), + }, + filesystem.SymlinkDefinition{ + Target: proptools.StringPtr("/product/etc/security/adb_keys"), + Name: proptools.StringPtr("adb_keys"), + }, + filesystem.SymlinkDefinition{ + Target: proptools.StringPtr("/vendor/odm/app"), + Name: proptools.StringPtr("odm/app"), + }, + filesystem.SymlinkDefinition{ + Target: proptools.StringPtr("/vendor/odm/bin"), + Name: proptools.StringPtr("odm/bin"), + }, + filesystem.SymlinkDefinition{ + Target: proptools.StringPtr("/vendor/odm/etc"), + Name: proptools.StringPtr("odm/etc"), + }, + filesystem.SymlinkDefinition{ + Target: proptools.StringPtr("/vendor/odm/firmware"), + Name: proptools.StringPtr("odm/firmware"), + }, + filesystem.SymlinkDefinition{ + Target: proptools.StringPtr("/vendor/odm/framework"), + Name: proptools.StringPtr("odm/framework"), + }, + filesystem.SymlinkDefinition{ + Target: proptools.StringPtr("/vendor/odm/lib"), + Name: proptools.StringPtr("odm/lib"), + }, + filesystem.SymlinkDefinition{ + Target: proptools.StringPtr("/vendor/odm/lib64"), + Name: proptools.StringPtr("odm/lib64"), + }, + filesystem.SymlinkDefinition{ + Target: proptools.StringPtr("/vendor/odm/overlay"), + Name: proptools.StringPtr("odm/overlay"), + }, + filesystem.SymlinkDefinition{ + Target: proptools.StringPtr("/vendor/odm/priv-app"), + Name: proptools.StringPtr("odm/priv-app"), + }, + filesystem.SymlinkDefinition{ + Target: proptools.StringPtr("/vendor/odm/usr"), + Name: proptools.StringPtr("odm/usr"), + }, filesystem.SymlinkDefinition{ Target: proptools.StringPtr("/product"), Name: proptools.StringPtr("system/product"), @@ -240,7 +311,42 @@ func partitionSpecificFsProps(fsProps *filesystem.FilesystemProperties, partitio Target: proptools.StringPtr("/system_dlkm/lib/modules"), Name: proptools.StringPtr("system/lib/modules"), }, + filesystem.SymlinkDefinition{ + Target: proptools.StringPtr("/data/cache"), + Name: proptools.StringPtr("cache"), + }, } + fsProps.Dirs = proptools.NewSimpleConfigurable([]string{ + // From generic_rootdirs in build/make/target/product/generic/Android.bp + "acct", + "apex", + "bootstrap-apex", + "config", + "data", + "data_mirror", + "debug_ramdisk", + "dev", + "linkerconfig", + "metadata", + "mnt", + "odm", + "odm_dlkm", + "oem", + "postinstall", + "proc", + "second_stage_resources", + "storage", + "sys", + "system", + "system_dlkm", + "tmp", + "vendor", + "vendor_dlkm", + + // from android_rootdirs in build/make/target/product/generic/Android.bp + "system_ext", + "product", + }) case "system_ext": fsProps.Fsverity.Inputs = []string{ "framework/*", -- cgit v1.2.3-59-g8ed1b