summaryrefslogtreecommitdiff
path: root/filesystem/filesystem.go
AgeCommit message (Collapse)Author
2025-01-30Fix staging dir creation for adevice Cole Faust
Adevice does a `ninja -t inputs -i droid` and filters the results for out/target/product/ to find files in the staging directories. We were just copying the staging directories without creating ninja rules before, so that failed. Actually create the ninja rules. The rules are created in the android_device module instead of the filesystem so that if you have multiple filesystems, they don't create conflicting installation rules. We should provide a way for tools like adevice to query the build system for installed files, no matter where they are in the out/ dir, and use that to replace this logic. This cl produces the following diff in out/target/product compared to soong-only builds before this change: https://paste.googleplex.com/4624734193713152 It's mostly empty directories, which I don't think matter for adevice. Bug: 393464638 Bug: 392957226 Test: `m installclean && m && launch_cvd && adevice update` says the device is up-to-date. Change-Id: Ifb52aaf5bc3edd2e3900546bf9df73a52d1022c0
2025-01-30Disable target_files.zip generation in soong-only builds Spandan Das
The current implementation chains the non-hermetic and hermetic file creation in a single cmd. This causes `m droid` in --soong-only to do some redundant work. Since the hermetic file is used in target_files.zip, and this file is currently not fully migrated to soong builds, comment this out for now. Test: Set PRODUCT_SOONG_ONLY locally Test: m droid Bug: 393203512 Change-Id: Iff3a6a553922533c58b3d0206898bd627281c3fb
2025-01-21Modify autogen vbmeta chain and include partitions logic Jihoon Kang
This change modifies the logic in selecting the chain and include partitions for the top level vbmeta partition generation to follow that in make. Implementation details: - Introduce separate functions for selecting the include and chain partitions - Set vbmetaPartitionProvider in boot images and filesystem modules given that boot images can be selected as chained partitions. Test: compare soong and make generated vbmeta partitions command Bug: 390204058 Change-Id: I7940629212c4624e88d25b162755205503cfa469
2025-01-17Merge "Sort lines in property file" into main Treehugger Robot
2025-01-17Merge "Generate block_list only when building img for target_files.zip" into ↵ Spandan Das
main
2025-01-17Sort lines in property file Cole Faust
Make also sorts the lines, sort them in soong so it's easier to compare. Bug: 376727180 Test: m --soong-only Change-Id: I9a5e61a9348a7d2ff5058260768e89065a06e7c8
2025-01-17Generate block_list only when building img for target_files.zip Spandan Das
The same block_list file is currently declared in the propfile of primary .img file as well the secondary .img file (for target_files.zip). Both the .img files are created in the same ninja command, but in the current implementation the block_list file is generated twice with the same contents. This CL moves the block_list file to the image prop file of the secondary .img creation. Test: presubmits Change-Id: I0f8f4e4c7bec1ae5e370ac97d6608f9754e719e3
2025-01-16Install odex/vdex files into soong-built system_other Cole Faust
This makes system_other almost identical to the make-built one, but there's still a diff in just one file: system_other/system/priv-app/CredentialManager/oat/x86_64/CredentialManager.art Bug: 390269431 Test: m --soong-only Change-Id: I440097cead56a20d0268f4e766ac1be8fe11b34b
2025-01-16Build system_other image in soong-only builds Cole Faust
This just builds an empty system_other image for now, the dexpreopt files will be added in a followup change. Bug: 390269431 Test: m --soong-only Change-Id: Ic4a9bcb8b7ba1eb4444b3339d6c0b0cdfd485714
2025-01-15Dedup common filesystem code Cole Faust
Bug: 390269431 Test: m nothing Change-Id: I18b9b90ac7c29f78e47415a89805a71e65b41650
2025-01-15Remove Include_make_built_files Cole Faust
We're not using this anytime soon, so just remove it for now. Bug: 390269431 Test: m nothing Change-Id: I51bbf104dceabafc08d562cfecb31a845cb88d12
2025-01-15Rewrite code to copy images to PRODUCT_OUT Cole Faust
Move the logic to android_device. The reasons for this are: - As we start to check in android_device and filesystem modules, only one set should do the copying. It's easy enough to mark the android_device as the one, but harder for the filesystem modules given that they may be reused between different devices and now that top-down mutators are no longer supported. - It's easier to manage this code in one place, especially since it's temporary and should be removed eventually. Having this higher confidence that there's only 1 copy rule set in the build makes it less of a problem to use actual ninja rules for the images. Bug: 376727180 Test: m --soong-only && ls out/target/product/vsoc_x86_64/ Change-Id: If20ea2c55053cc962de9f9770db002edbc194835
2025-01-15Create build rules for hermetic .img files Spandan Das
Make packaging generates build rules for two $partition.img files 1. Containing inodes with build timestamps 2. Containing inodes with pinned timestamps The former is useful for adb sync. The latter is used for target_files.zip. This CL creates a build rule to generate (2) with soong `filesystem` modules. The propFile for (2) will be created by concat'ing the propFile for (1) with `use_fixed_timestamp=true` Test: m out/soong/.intermediates/build/soong/fsgen/aosp_cf_x86_64_phone_generated_device/android_x86_64_silvermont/target_files.zip out/target/product/vsoc_x86_64/obj/PACKAGING/target_files_intermediates/aosp_cf_x86_64_phone-target_files.zip Test: diff -r out/target/product/vsoc_x86_64/obj/PACKAGING/target_files_intermediates/aosp_cf_x86_64_phone-target_files/ out/soong/.intermediates/build/soong/fsgen/aosp_cf_x86_64_phone_generated_device/android_x86_64_silvermont/target_files_dir/ --no-dereference - super_empty.img and system_other.img are missing - vbmeta*, boot* and userdata have binary diffs - the rest are identical Change-Id: If078220f215693660796090eb9b690b0ad41fd38
2025-01-15Generate block list info file of .img files Spandan Das
This is a text file with block size information of the contents of the .img files. build_image supports creating this as an implicit output. This CL creates the build rule to generate this output. This will be copied to IMAGES/ subdir of target_files.zip There is a subtle difference between the make and soong implementation. In make, we generate two $partiton.img files. One is hermetic (for targret_files.zip), and other is non-hermetic (for adb sync). The block file is generated from the hermetic one. OTOH, in the soong implementation, we are generating the block file from the non-hermetic one. This should not matter, since pinning the timestamp should not have an effect on block sizes. This implementation detail can be changed in a follow up CL if necessary. Test: diff'd target_files.zip locally, all $partition.map files are identical Bug: 388635097 Change-Id: I984d4fb55071296a82dae38ef09be6804ff0f3ae
2025-01-14Disable sparse only when partition_size is undefined. Jihoon Kang
Currently, filesystem module automatically adds `disable_sparse` entry when generating the prop file. However, this property should not be added when partition_size is specified, given that partition_size property is introduced in filesystem module with https://r.android.com/3451348. Test: m out/soong/.intermediates/build/soong/fsgen/aosp_cf_x86_64_phone_generated_userdata_image/android_common/userdata.img Bug: 388920173 Change-Id: Ia86210be77284c71f3831464149789b934c55001
2025-01-14Specify additional props for userdata image Jihoon Kang
Implementation details: - Introduce support_casefolding, support_project_quota and enable_compression properties in filesystem modules. - Specify the userdata partition-specific props in filesystem_creator. Test: m out/soong/.intermediates/build/soong/fsgen/aosp_cf_x86_64_phone_generated_userdata_image/android_common/userdata.img Bug: 388920173 Change-Id: Id37c677e9bf28c1a338459e28ac6b05e5f58b407
2025-01-14Allow building userdata partition in Soong Jihoon Kang
The soong vs make generated userdata images are still not bit identical, but this change resolves execution time failure from build_image when building userdata.img. Implementation details: - Introduce partition_size property to filesystem module - Specify the correct mount point for userdata partition Test: m out/soong/.intermediates/build/soong/fsgen/aosp_cf_x86_64_phone_generated_userdata_image/android_common/userdata.img Bug: 388920173 Change-Id: I2c0945ce70d74c632ba241c8a93c60763cfe87e7
2025-01-10Merge changes Ia60fadb8,I13310d60 into main Spandan Das
* changes: Add a partial IMAGES/ subdir for target_files.zip Add a Stem property to filesystem
2025-01-10Merge changes Ie937a236,I74e6ebef,Ib8020db0 into main Yu Liu
* changes: Convert hasCode and aaptLibs to use ModuleProxy. Convert validatePartitionType and checkJniLibsSdkVersion to use ModuleProxy. Convert getLibsForLinkerConfig to use ModuleProxy.
2025-01-10Add a Stem property to filesystem Spandan Das
If set, it will be used as the filename of the final .img artifact instead of the $module_name +.img. The use case for this is to make the filenames of the img files consistent in target_files.zip irrespective of $TARGET_PRODUCT. Test: built the filesystems locally Bug: 388635097 Change-Id: I13310d609bb6170b52f92c284b933cee2a646254
2025-01-10Assemble ROOT/ files of target_files.zip Spandan Das
rsync will be used to copy the root files of the system_image dep Test: verified that ROOT/ in target_files.zip is same when built with make and soong Bug: 385383524 Change-Id: I84279109308d36ec147a63000bb1912c2ffb1273
2025-01-08Merge changes I68c6319a,I21c9ddc2 into main Treehugger Robot
* changes: Update $PRODUCT_OUT for auto generated partitions Copy partition image files to PRODUCT_OUT
2025-01-09Convert validatePartitionType and checkJniLibsSdkVersion to use Yu Liu
ModuleProxy. Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I74e6ebef7d7fb87e338cb99bd4a867a8bd7e64c9
2025-01-08Update $PRODUCT_OUT for auto generated partitions Jihoon Kang
This change allows the auto generated filesystem modules to copy the installed files to $PRODUCT_OUT, on top of the currently allowed soong defined system image. Also, this change replaces the cp command with rsync, to prevent identical files from being copied in incremental builds. Test: rm -rf out/ && m aosp_cf_x86_64_phone_generated_device --soong-only Bug: 376727180 Change-Id: I68c6319aad99358648aefa35a6acea8644100875
2025-01-08Convert getLibsForLinkerConfig to use ModuleProxy. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: Ib8020db0d1cf9e035ace52e2a893bb3df7975127
2025-01-08Don't include disabled modules in linker config files. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: Ie327e03418e8762771fdbf290a35293aa5fb8e17
2025-01-08Copy partition image files to PRODUCT_OUT Jihoon Kang
Implementation details: - Copy the partition image files to PRODUCT_OUT via rsync Test: m aosp_cf_x86_64_phone_generated_device Bug: 376727180 Change-Id: I21c9ddc22def5a48a885176b53b886326d7c9243
2025-01-06Use fixed timestamp in img files using an environment variable Spandan Das
This creates hermetic img files, and will be used to assert equivalence between make and soong built img files. An alternative would be to use the timestamp from build_date.txt, but that causes a full push on the first adb sync (b/385995921) Test: spot checked that system_ext.img built by make and soong are bit identical (with notice files commeted out) Change-Id: I89e318f630f488074369fb88556215989271260e
2025-01-03Merge "Revert "Pass build_datetime_file to soong partitions"" into main Treehugger Robot
2025-01-03Revert "Pass build_datetime_file to soong partitions" Spandan Das
Revert submission 3411237-build_datetime_build_image Reason for revert: b/385995921. Causes a full push on the first adb sync Reverted changes: /q/submissionid:3411237-build_datetime_build_image Change-Id: I3171345025ddd2fd7c8dd16329b3ddb4abdc3940
2024-12-26Revert^2 "Make vendor_ramdisk partition install recovery partition files" Jihoon Kang
This change resubmits https://r.android.com/3425159. Unlike the original submission, this change does not hash the directory contents but implicitly depends on the output partition file of the filesystem module to implement inter-filesystem dependencies. Test: unpack and diff soong and make generated vendor_ramdisk partitions Bug: 381104942 Change-Id: I35528cb0dedbeeb7fef3d72df6e008ec0ac9c7bb
2024-12-20Add a basic target_files.zip Cole Faust
Only contains the vendor image files for now, will expand in followup cls. Bug: 385383524 Test: m out/soong/.intermediates/build/soong/fsgen/aosp_cf_x86_64_phone_generated_device/android_common/target_files.zip Change-Id: I517e7022b5c6294a2f8e5246f52897b406b63cd7
2024-12-19Revert "Make vendor_ramdisk partition install recovery partition..." Naresh Kumar Podishetty (xWF)
Revert submission 3425159 Reason for revert: <Reason for revert: Dorid monitor: Likely culprit for b/385262936 - verifying through ABTD before revert submission. This is part of the standard investigation process, and does not mean your CL will be reverted.> Reverted changes: /q/submissionid:3425159 Change-Id: I83d6af532bd76c4e10fcedc3d49b4c43efa0ecfe
2024-12-20Make vendor_ramdisk partition install recovery partition files Jihoon Kang
Implementation details - Set the rootdir and the root directory hash file in the FilesystemProvider. - Create a text file containing the hash of the root directory. - Introduce include_files_of property in filesystem, which its rootdirs are passed as inputs in mkbootfs invocation for building cpio filesystems. - Set the soong generated recovery partition as the include_files_of property of the soong generated vendor_ramdisk partition. Test: Extract vendor ramdisk partition and inspect Bug: 381104942 Change-Id: I8c00d6258b4e8fe094ee72a479b06ebcf5dffaf3
2024-12-18Touch linkerconfig/ld.config.txt for recovery filesystem module Jihoon Kang
To match the behavior in the make generated recovery filesystem Test: mount soong generated recovery filesystem and inspect Bug: 381888358 Change-Id: Iaf936f9d0d1c2c00c4ab7366ff9689dd59ff46e5
2024-12-16Remove dep on fingerprint file Cole Faust
So that microdroid doesn't get different contents every build. Fixes: 383555703 Test: diff 2 builds of m microdroid Change-Id: If974fdae39008d7cdc0e408114809d1a14efe629
2024-12-14Merge "Make system partition import system_ext's aconfig flags" into main Cole Faust
2024-12-13Make BuildLinkerConfig run in its own action Cole Faust
We should probably do this change for more parts of the filesystem RuleBuilder. Moving the linker config action out of the filesystem rulebuilder allows it to run in parallel with opther actions, and not rerun every time the filesystem is rebuilt. Bug: 384091387 Test: Presubmits Change-Id: Ic7305c555260fb5d9900c6c709b6c81dc0708d2b
2024-12-13Make system partition import system_ext's aconfig flags Cole Faust
This is the behavior in make since aosp/3261300. It's a problem for treble though, so maybe should be revised in the future. If the system -> system_ext dependency becomes a problem (like if we need to add a system_ext -> system dependency later), I think we could break it up by creating a ".aconfig" sub-module of filesystem modules, and then the dependency is only added from system -> system_ext.aconfig. But we don't need that right now. Fixes: 382518797 Test: diff out/target/product/vsoc_x86_64/system/etc/aconfig_flags.pb out/soong/.intermediates/build/soong/fsgen/aosp_cf_x86_64_phone_generated_system_image/android_common/system/system/etc/aconfig_flags.pb Change-Id: Ia0d043e35f03bbf2bc8a29df0b2b8ecd8427e727
2024-12-12Pass build_datetime_file to soong partitions Spandan Das
The build_datetime_file can be used to create hermetic image files, and will be used to validate mk->soong partition migration. Bug: 383357338 Test: lunch aosp_cf_x86_64_phone-trunk_staging-userdebug Setup - export BUILD_DATETIME=10 - commented out installed_*_notice_xml_gz in build/make/core/Makefile Test: verified that the following .img files are bit identical odm,system_dlkm,vendor_dlkm,odm_dlkm Change-Id: I254cd3f1afbd26439dd70505c7135d834ec234bc
2024-12-12Make Security_patch an `android_filesystem` property Spandan Das
Make-built partitions use partition specific security_patches for build_image, but Soong-built partitions currently use the platform security patch for all partitions (including vendor,odm,...). This CL introduces a `Security_patch` property to set this value explicity. The name and description have been copied from `bootimg`. This CL also updates `fsgen` to set this property on the autogenerated partitions. The logic has been copied from `build/make/core/Makefile`. It is currently missing `boot` and `init_boot` (I have not tested bit-identical for those partitions yet). Bug: 383357338 Test: lunch aosp_cf_x86_64_phone-trunk_staging-userdebug Setup - export COPY_IMAGES_FOR_TARGET_FILES_ZIP=true - export BUILD_DATETIME=10 - commented out installed_*_notice_xml_gz in build/make/core/Makefile Test: verified that the following .img files are bit identical in top of CL stack odm,system_dlkm,vendor_dlkm,odm_dlkm Change-Id: I9ae9bf957ffd479c57f12a49864589d285d93a71
2024-12-12Remove avb_salt from filesystem and boot_img Spandan Das
avb_salt was added to filesystem and boot_img to create reproducible builds https://r.android.com/2069528. This is no longer necessary, since build_image.py and verity_utils.py has been updated since then to prevent non-hermiticity from unspecified avb_salt. https://r.android.com/2613794. It uses the build_fingerprint as the salt instead of the filesystem entries. In preparation for creating bit-identical make and soong partition images, make the avb_salt consistent between make and soong partition iamges. Bug: 376539388 Test: lunch aosp_panther-trunk_staging-userdebug Test: m out/soong/.intermediates/packages/modules/Virtualization/guest/pvmfw/pvmfw_img/android_arm64_armv8-2a_cortex-a55/pvmfw.img (a bootimage module) followed by rm repeatedly Test: sha remains consistent Change-Id: Ie1afa4599ef1de4c8f1cd708a52cb60b37c19373
2024-12-11Merge "Make soong's event-log-tags file match make" into main Cole Faust
2024-12-11Make soong's event-log-tags file match make Cole Faust
Make included all event-log-tags in the source tree, wether or not they were installed on the device. Soong was only including files from the deps of the system image. In the long run, we'll want a per-partition event-log-tags file for incremental soong and an independant treble system image. But this works for now. Bug: 382515940 Test: diff out/target/product/vsoc_x86_64/system/etc/event-log-tags out/soong/.intermediates/build/soong/fsgen/aosp_cf_x86_64_phone_generated_system_image/android_common/root/system/etc/event-log-tags Change-Id: Id631c4292dda9531df3e460ef736fd9b15f6b566
2024-12-11Reapply "Use partition intead of "root" to assemble filesystem artifacts" Spandan Das
This reverts commit 135904463f96f81bd7ef7696569b02ebb61c8195. The revert will be applied alongside a change in build/make that ensures that the correct intermediates dir for aosp_shared_system_image is packged into target_files.zip Test: Previously failing OTA test now passes https://android-build.corp.google.com/builds/abtd/run/L04100030008317770 Change-Id: Ibdf3ae42348ec5840dcada8ce3182f87d4619cac
2024-12-10Merge changes from topic "recovery_font" into main Jihoon Kang
* changes: Install font module in recovery partition Define additional symlinks and dirs for recovery partition
2024-12-10Merge "Revert "Use partition intead of "root" to assemble filesystem ↵ Spandan Das
artifacts"" into main
2024-12-10Revert "Use partition intead of "root" to assemble filesystem artifacts" Liana Kazanova
This reverts commit 95db4499428f421571819699d92581e7422e7659. Reason for revert: DroidMonitor: Potential culprit for http://b/383376688 - verifying through ABTD before revert submission. This is part of the standard investigation process, and does not mean your CL will be reverted. Change-Id: I0d15b234381278f54e0504473d82ec4f14f81fac
2024-12-10Reapply "Remove unassigned event log tags feature" Cole Faust
.logtags files are a mapping of an integer -> name. However, there is an unused feature where you could put a '?' instead of an integer, and then the build system would assign a number to it, taking care to avoid all other already-assigned numbers across the source tree. This feature makes it hard to support some things we're working towards, like incremental soong and treble common system images, so remove it. Also modernize the python scripts a little. The additions since the revert are the cleanups from aosp/3403019, and removing a missed reference to all-event-log-tags.txt in java.mk. This reverts commit 078347368de279b41a37b3599e24e60014892fef. Bug: 382515940 Test: m event-log-tags Change-Id: I8f08f3286f1275083e2074948f2feb39219f3687
2024-12-10Merge "Revert "Remove unassigned event log tags feature"" into main Cole Faust