commit | 4a693b28e639352ec2eb433b7e2f466d20cff23c | [log] [tgz] |
---|---|---|
author | Jiyong Park <jiyong@google.com> | Wed Jan 13 22:12:52 2021 +0900 |
committer | Jiyong Park <jiyong@google.com> | Wed Jan 13 22:12:52 2021 +0900 |
tree | 2eb303b6d125d19b4fa3fdcfdda526c802998a23 | |
parent | c275c68dfd9192682a69b8b113ba92823ad0fd11 [diff] |
jacoco-report-classes-all.jar doesn't depend on fake modules The reason that the jar file depended on modules_to_install was to collect files from other partitions, not just system. It isn't the intention to gather fake modules like phony modules and more importantly their dependencies (LOCAL_REQUIRE_MODULES). This change explicitly filters out the fake modules to make the intent clearer. In fact, the jar file depending on fake modules can have a side effect that overridden modules are installed. It can happen as follows: PRODUCT_PACKAGES += A B C LOCAL_MODULE := A LOCAL_REQUIRED_MODULES := B include $(BUILD_PHONY_PACKAGE) LOCAL_MODULE := B include $(BUILD_XXX) ... LOCAL_MODULE := C LOCAL_OVERRIDES_MODULES := B include $(BUILD_XXX) modules_to_install is set to out/target/product/xxx/fake_packages/A-timestamp out/target/product/xxx/system/.../C ; B is correctly overridden. But there still is an order-only dependency from A to B which is created by add-all-target-to-target-required-modules-deps. Unfortunately, overridden isn't take into account here. So, if the jacoco jar file depends on modules_to_install, both B and C are installed. And if the creation of system.img happens later, the two are included together, which is an error. A preferred way of fixing this is to amend add-all-target-to-target-required-modules-deps so that override is take into account. However, it will likely to require more Make tricks. This change takes a much easier path; pruning the fake packages from the dependencies so that its dependencies which might be wrong can't be installed. Bug: 175400393 Test: build/soong/soong_ui.bash --make-mode SKIP_ABI_CHECKS=true SOONG_COLLECT_JAVA_DEPS=true TARGET_PRODUCT=cf_x86_phone TARGET_BUILD_VARIANT=userdebug TARGET_USERDATAIMAGE_PARTITION_SIZE=17179869184 droid dist DIST_DIR=out/dist EMMA_INSTRUMENT=true EMMA_INSTRUMENT_FRAMEWORK=true CLANG_COVERAGE=true NATIVE_COVERAGE_PATHS="*" NATIVE_COVERAGE_EXCLUDE_PATHS="art bionic/libc device" continuous_instrumentation_tests continuous_native_tests device-tests platform_tests No com.android.art.apex in system.img Change-Id: Ie8a917b7c3985c3a4f19372a4430accd84124e83
This is the Makefile-based portion of the Android Build System.
For documentation on how to run a build, see Usage.txt
For a list of behavioral changes useful for Android.mk writers see Changes.md
For an outdated reference on Android.mk files, see build-system.html. Our Android.mk files look similar, but are entirely different from the Android.mk files used by the NDK build system. When searching for documentation elsewhere, ensure that it is for the platform build system -- most are not.
This Makefile-based system is in the process of being replaced with Soong, a new build system written in Go. During the transition, all of these makefiles are read by Kati, and generate a ninja file instead of being executed directly. That's combined with a ninja file read by Soong so that the build graph of the two systems can be combined and run as one.