summaryrefslogtreecommitdiff
path: root/apex/builder.go
AgeCommit message (Collapse)Author
2025-03-13Change CommonModuleInfoProvider to a pointer. Yu Liu
Bug: 358427516 Test: Manually verified genereated ninja and mk files, unit tests. Change-Id: I53a6dd718232735decbeb93febfd269dd9449e86
2025-03-07Convert WalkPayloadDeps to use ModuleProxy. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: If0d132c2310eb958c066747f9c16251cc24fedd0
2025-03-07Rename CommonModuleInfoKey to be consistent with others. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I1ce8bc782666586633ded9cfaf1b9590e3c0efde
2025-02-24Merge "Package Dexpreopt files" into main Kiyoung Kim
2025-02-23Merge "Remove apex.use_file_contexts_as_is" into main Jooyung Han
2025-02-24Package Dexpreopt files Kiyoung Kim
Dexpreopt files started to be missed from Soong defined system images. Package those files so they can be added into the system image in the same way with KATI system image. Bug: 370352548 Test: Soong defined system image build succeeded Change-Id: I1b665b9a891d89d3f042c0ad8a4ffca6cd567b2e
2025-02-12Provide min sdk version as ApiLevel instead of string. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I8c7b3b493877a9857ca433b015e6e49ad8387f91
2025-02-12Merge "Install VINTF fragment modules in the APEX" into main Treehugger Robot
2025-02-10Convert android.TransitionMutator to TransitionInfo Colin Cross
Use the ApexInfo instead of a string as the TransitionInfo for apex variations. This removes the need for apexInfoMutator, which is the last remaining top down mutator. This has a variety of ramifications. One is that it is no longer possible to add a dependency onto the apex variation of a module, as that would require constructing a matching ApexInfo. Instead, anything that wants to add a dependency on the apex variation has to depend on the apex instead, and get to the module by walking its transistive dependencies. Another ramification is that modules in apexes can no longer determine which apexes they are in (unless they set UniqueApexVariations so that each variation is in exactly one apex). This prevents some of the existing container violation checks from working after this CL, tracked in b/394955484. It also requires using unique variation names for the prebuilt and source dependencies of apexes, so the apex variations for dependencies of prebuilts now have a prebuilt_ prefix. Bug: 372543712 Bug: 394955484 Test: go test ./... Change-Id: I3d08aca1ac956ab0e343ec3f235a736cd93be0e1
2025-02-10Install VINTF fragment modules in the APEX Kiyoung Kim
Currently APEX ignores vintf_fragments modules within the APEX, and all VINTF fragments are installed with prebuilt_etc modules. This change installs vintf_fragment modules in the APEX, so any additional prebuilt_etc modules are not required as long as binaries define vintf_fragment_modules references. Bug: 363105686 Test: AOSP CF x86_64 build succeeded Change-Id: I33b58178cd51dc2c4bb9226fdd68e7990dccd6a2 Merged-In: I33b58178cd51dc2c4bb9226fdd68e7990dccd6a2
2025-02-04Merge "Move installation of dexpreopted system server classpath libraries ↵ Colin Cross
into apex" into main
2025-02-03Move installation of dexpreopted system server classpath libraries into apex Colin Cross
System server jars in apexes currently use a heuristic to determine whether or not they are the "main" variant in order to create rules that copy their dexpreopt artifacts to the final installed location and their dex jars to a known location for other modules to reference. The heuristic depends on knowing all apexes that depend on the module, which will not be possible when the apex info mutator is rewritten to support future incremental analysis. Instead, export the dexpreopt artifacts and dex jars, and let the apex decide whether or not to install them. Bug: 372543712 Test: all soong tests pass Change-Id: I478bc2edceca4614e08e9a695b05d091e5437ba1
2025-01-31Install apex symbol file Cole Faust
This is a partial revert of aosp/3308088. We need the symbol file to still be installed, because a later ctx.InstallSymlink file adds a dependency on the it. We removed that install initially so that it didn't get installed in filesystems, to replace that, just exclude files installed to the "apex" partition from filesystems. Bug: 393617060 Test: cd bionic; mm Change-Id: Id4abe966c630d1e356575386af233eab92849934
2025-01-22Install apex symlinks in m --soong-only Spandan Das
Apexes such as com.android.runtime install additional symlinks in the staging $PRODUCT_OUT/apex directory. It uses PathForModuleInPartition("apex") to avoid the side affect of inadvertently copying this into rdeps such as system.img To prevent non-null builds when switching between `m` and `m --soong-only`, remove this special case. Test: m nothing Bug: 390471378 Change-Id: I81ff7b9c18f84cbe83836e6992124080c93359d2
2025-01-14apex: use proper partition tag for validations Jooyung Han
module.PartitionTag(DeviceConfig) doesn't work for validations because it tells the physical partition where the apex is installed. It returns "system" even for vendor APEXes when "VendorPath" is set to "system/vendor". For validations, we need logical partition tag. So, "vendor:true" apexes should be "vendor" even when it's installed in /system/vendor. Bug: 384988749 Test: m --no-skip-soong-tests Change-Id: Ib478caa62c98808bc94fe350a2f182f1d2b42a46
2025-01-13Remove apex.use_file_contexts_as_is Jooyung Han
It was a workaround to build a vendor apex which needs to read apex_manifest and run on SDK 34, which doesn't have vendor_apex_metadata_file yet. Vendor_apex_metadata_file is available since SDK 35, we can remove the workaround. Bug: 388964457 Test: m --no-skip-soong-tests Change-Id: Iad91bee7c689c96322e342485301152739baa92a
2025-01-09Run apex_sepolicy_tests with erofs apexes Jooyung Han
This turns on apex_sepolicy_tests for erofs apexes. The test now uses `apex-ls` (a new tool to print security contexts for apex contents). Bug: 353896817 Test: OVERRIDE_PRODUCT_DEFAULT_APEX_PAYLOAD_TYPE=erofs m run_apex_sepolicy_tests Change-Id: Ia42d0641be7a5007fb73337257893235f9a98f22
2025-01-03apex: pass partition tag to sepolicy tests Jooyung Han
Vendor apex shouldn't use system_file_type contexts. Bug: 387192232 Test: m Change-Id: Icce6eeee147ffb4175ede2d56420483788103cb4
2024-12-17Merge "Use mkfs.erofs instead of make_erfos" into main Treehugger Robot
2024-12-17Merge "Connect fingerprint build flag to soong." into main Marybeth Fair
2024-12-13Use mkfs.erofs instead of make_erfos Jooyung Han
We don't need an alias for mkfs.erofs. Bug: 383669618 Test: m Change-Id: Ib242553689ff3d38179360b8d130c3f03740bcb6
2024-12-12Connect fingerprint build flag to soong. Marybeth Fair
When RELEASE_FINGERPRINT_ACONFIG_PACKAGE is true, the storage file version will be v2 for aconfig create-storage. Test: manual Change-Id: I6861ac1bfe8680ff7311e26efb627e0ac7c58f05
2024-12-12Merge "Fix missing file errors when running with --soong-only" into main am: ↵ Treehugger Robot
e451ed647f Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3408300 Change-Id: Ifcf1ea84d37513820a2904d1da75e4a223311249 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-12-11Fix missing file errors when running with --soong-only Cole Faust
Installed files currently add dependencies on their associated initrc / vintf fragment files. InitRc and vintf fragment files are special: multiple modules are allowed to install them, and then they're deduplicated in the androidmk singleton before emitting rules to build them. The androidmk singleton doesn't run in soong-only mode, so they never get build rules emitted. We don't actually care about the "fully installed" files in soong-only builds for the most part (host tools are probably an exception), so just rmeove the dependency on these files for now. There's also an issue with an apex symbol file symlink missing. This issue I understand much less well, I beleive it's related to aosp/3308088. However, again, we don't really care about installed files, so I just disabled the apex symbol file symlinks in soong-only builds. Bug: 380109595 Test: m --soong-only Change-Id: I6ca4a7f241044937edc50c65f5a8120e6984136e
2024-12-10Merge "Include 9 as the last allowed digit of default version code." into ↵ Alyssa Ketpreechasawat
main am: 110e0a8ff2 Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3398639 Change-Id: I748dbf934e66076a7b794c7b42363ab5a29090ff Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-12-10Merge "Include 9 as the last allowed digit of default version code." into main Alyssa Ketpreechasawat
2024-12-09Merge "Convert buildApexDependencyInfo to use ModuleProxy." into main am: ↵ Yu Liu
c8914a47c1 Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3393476 Change-Id: I1fbd5340b612e33c31f4fec1486e55eafe0d710d Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-12-09Include 9 as the last allowed digit of default version code. Alyssa Ketpreechasawat
Due to go/aml-default-version-code, we are required to use the last digit for version code as 9. Bug: 381839073 Test: presubmit Test: adb install Change-Id: Ia3534d687541a85042a328c307daf78b294b5d89
2024-12-06Convert buildApexDependencyInfo to use ModuleProxy. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I7527d331b31a3a97587ca76105e9facb99624bde
2024-11-25Merge "Add apex_test.skip_validations" into main am: fc7b83d32b Treehugger Robot
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3367941 Change-Id: Icb2627b5945102dc06da542f7168fef1f399e009 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-11-25Add apex_test.skip_validations Jooyung Han
Run validations for apex_test modules as well. If a test apex needs to be invalid for testing, it needs to specify which validation it needs to skip. This is to prevent cases like using apex_test to avoid a certain validation, but accidentally skipping all validations. For now, host_apex_verifier/apex_sepolicy_tests can be skipped. Bug: 363090062 Test: m nothing --no-skip-soong-tests Test: mmma system/apex Change-Id: I2d14f25f579eabe92ed2bd0e28b5ed19583df99d
2024-11-14Merge "Use fewer OutputPaths" into main am: d74bf29dba Treehugger Robot
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3348988 Change-Id: Ifc69292893cb2e242487878610d6392d5601c597 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-11-14Merge "Use fewer OutputPaths" into main Treehugger Robot
2024-11-14Don't use echo -e am: 7cd1d422c7 Colin Cross
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3349192 Change-Id: Id4d26216d8d9b0314a72eab62075dc79cf95114a Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-11-13Use fewer OutputPaths Cole Faust
A lot of the time, you really mean android.Path or android.WriteablePath instead of OutputPath. Also, many modules were holding onto OutputPaths/WriteablePaths after the files had already been generated, meaning they should no longer be treated as writable paths and are instead inputs into other actions. Change the type of those paths to just android.Path. Test: verified ninja files were unchanged on aosp_arm64-trunk_staging-userdebug Change-Id: Id773171bef59d855ba33c4b85cef268031cbec39
2024-11-13Don't use echo -e Colin Cross
A rule that uses echo -e may execute in a dash shell instead of bash when running on the build servers. The dash echo builtin is posix compliant, and does not treat -e as an option[1]. Replace all uses of echo -e with echo if it does not need escape sequences, or printf if it does. [1] https://wiki.ubuntu.com/DashAsBinSh#echo Bug: 378931009 Test: manual Change-Id: I2974f59ea10a613bc3bd36e3591fd81f38a1769a
2024-11-13Merge 24Q4 (ab/12406339) into aosp-main-future Xin Li
Bug: 370570306 Merged-In: I417880c1689390ebdc9caabef705bce739bb0baf Change-Id: Ie978c93db9016c520e95eaa72c5ec063c87d6b3d
2024-11-12Change GetModuleFromPathDep to use ModuleProxy. Yu Liu
Bug: 377723687 Test: Compare ninja and mk files generated. Change-Id: I428b0965b217adb20a792ebde88374e0c6fae9d6
2024-11-06Delete trim_against support Colin Cross
trim_against is never set in Android.bp files, and PRODUCT_TRIMMED_APEX is never set to set the TrimmedApex config variable. Delete all the dead code that is never reached. Test: builds Flag: EXEMPT dead code removal Change-Id: I1dd2e2a5bcb1c38148149264776c718e02291649
2024-10-17Merge "apex: pass partition_tag to host_apex_verifier" into main Jooyung Han
2024-10-15Do not install internal files of apex Spandan Das
The motivation for this is to prevent the internal deps of apexes from being installed in the top-level `android_filesystem`. This CL does not get rid of the internal androidmk modules created by apexes. Symbols listed in `LOCAL_SOONG_JNI_LIBS_SYMBOLS` will be copied to $PRODUCT_OUT/apex/<apex> if <apex> is built. However, these additional files will not be registed in ctx.packagingSpecs of the apex. Test: go test ./apex Test: no changes in the merged `jacoco-report-classes-all.jar` of coverage builds Change-Id: I5ca4b8069af6c4b464fd13e9a6553379eef3a57b
2024-10-14apex: pass partition_tag to host_apex_verifier Jooyung Han
host_apex_verifier can check partition-specific checks. For example, .rc files in APEX don't support 'on' if the APEX is from /system. To support this, pass the partition tag to host_apex_verifier. Bug: 223896570 Test: m Test: host_apex_verifier --apex=<path> --partition_tag=system # fails when the apex has .rc file with 'on' section. Change-Id: I62141aad5823cedb114434fd19bed5d31f6c3bbc
2024-10-03Make the package_name property configurable Cole Faust
Requested by a user. Fixes: 371213057 Test: m nothing --no-skip-soong-tests Change-Id: I4268257b03d632f068c38a572896582cddb81ecd
2024-10-01Merge "Set version code of apex and apk based on ↵ Alyssa Ketpreechasawat
RELEASE_DEFAULT_UPDATABLE_MODULE_VERSION." into main
2024-09-27Set version code of apex and apk based on ↵ Alyssa Ketpreechasawat
RELEASE_DEFAULT_UPDATABLE_MODULE_VERSION. The build flag RELEASE_DEFAULT_UPDATABLE_MODULE_VERSION is set up to allow the default version code of updatable apk and apex to be configurable per release config. Use the value from flag and remove old constant value (DefaultUpdatableModuleVersion). Bug: 369531931 Test: presubmit Test: flash cf and check version Change-Id: Ia0a8634360cbe83501cdafee888678836005620f
2024-09-26Remove top down strict updatability checks Colin Cross
The enforce_strict_updatability_linting and apex_strict_updatability_lint are some of the last top down mutators, and removing them will help with incremental analysis. Both mutators are used to propagate a flag to transitive java dependencies that causes them to add extra checks to their lint rules to require that baselines not include any skipped NewApi checks. Instead of modifying dependencies to check the baselines, propagate the baselines up to the modules that are requesting the checks, and perform the checks on all transitive baselines there. Bug: 367784740 Test: TestJavaLintStrictUpdatabilityLinting Test: TestApexStrictUpdtabilityLint Flag: EXEMPT refactor Change-Id: Ief2e3b26d745da61f13e621d635a5879d9c56779
2024-09-26Merge "Allow WalkPayloadDeps to be called from mutators" into main Colin Cross
2024-09-26Merge "Use providers for lint" into main Colin Cross
2024-09-25Allow WalkPayloadDeps to be called from mutators Colin Cross
Replace ModuleContext with BaseModuleContext in WalkPayloadDeps and all of the callbacks used with it to allow using WalkPayloadDeps from mutators. Test: builds Flag: EXEMPT refactor Change-Id: Ie9d6cb7e9977b1d963cfbb3e43d6749307b4b1e0
2024-09-25Use providers for lint Colin Cross
Bug: b/348040422 Test: lint_test.go Flag: EXEMPT refactor Change-Id: I420bee2c7056a3f4acee3af5955f79c504ea61d9