Respect JIT-zygote config when generating boot image location.

Earlier CL Ida40dfae8c83bf7c2e737d5c7ea418e1197ad826 introduced
Soong-generated Make variable 'DEXPREOPT_IMAGE_LOCATIONS'. That CL was
erroneous in that it did not take JIT-zygote config into account and
generated identical location for "boot" and "apex" boot images.

This caused build breakages, because in case of JIT-zygote config the
two variables 'DexPreoptImages' and 'DexPreoptImageLocations' in the
module's dexpreopt.config were out of sync: 'DexPreoptImages' was
for the "apex" image, and 'DexPreoptImageLocations' was for the "boot"
image.

CL I9a91fc48e54d7d43abec2cb2b5a11e3581db380b introduced a workaround
for this problem: incorrect 'DexPreoptImageLocations' from the module
dexpreopt.config was ignored, and instead boot image location was
manually reconstructed from 'DexPreoptImages'. This workaround would
not work when we start using boot image extension and location will
become more complex.

This CL fixes the way 'DexPreoptImageLocations' is generated by
spliting the 'DEXPREOPT_IMAGE_LOCATIONS' variable in two variables
depending on the boot image flavour "boot" of "apex". This is
aligned with the way other similar variables are generated.

Test: aosp_walleye-userdebug boots.
Test: walleye_jitzygote-userdebug builds
  (on git_rvc-release branch with this CL cherry-picked).

Change-Id: I449c968909635dd8cc431323fccbc7fce440fea5
This commit is contained in:
Ulya Trafimovich 2020-01-06 13:50:55 +00:00
parent 9d4a90ef4b
commit d1c9bfe87a

View file

@ -111,6 +111,7 @@ endif
my_dexpreopt_archs := my_dexpreopt_archs :=
my_dexpreopt_images := my_dexpreopt_images :=
my_dexpreopt_images_deps := my_dexpreopt_images_deps :=
my_dexpreopt_image_locations :=
my_dexpreopt_infix := boot my_dexpreopt_infix := boot
ifeq (true, $(DEXPREOPT_USE_APEX_IMAGE)) ifeq (true, $(DEXPREOPT_USE_APEX_IMAGE))
my_dexpreopt_infix := apex my_dexpreopt_infix := apex
@ -183,6 +184,8 @@ ifdef LOCAL_DEX_PREOPT
endif # TARGET_2ND_ARCH endif # TARGET_2ND_ARCH
endif # LOCAL_MODULE_CLASS endif # LOCAL_MODULE_CLASS
my_dexpreopt_image_locations += $(DEXPREOPT_IMAGE_LOCATIONS_$(my_dexpreopt_infix))
my_filtered_optional_uses_libraries := $(filter-out $(INTERNAL_PLATFORM_MISSING_USES_LIBRARIES), \ my_filtered_optional_uses_libraries := $(filter-out $(INTERNAL_PLATFORM_MISSING_USES_LIBRARIES), \
$(LOCAL_OPTIONAL_USES_LIBRARIES)) $(LOCAL_OPTIONAL_USES_LIBRARIES))
@ -234,7 +237,7 @@ ifdef LOCAL_DEX_PREOPT
$(call end_json_map) $(call end_json_map)
$(call add_json_list, Archs, $(my_dexpreopt_archs)) $(call add_json_list, Archs, $(my_dexpreopt_archs))
$(call add_json_list, DexPreoptImages, $(my_dexpreopt_images)) $(call add_json_list, DexPreoptImages, $(my_dexpreopt_images))
$(call add_json_list, DexPreoptImageLocations, $(DEXPREOPT_IMAGE_LOCATIONS)) $(call add_json_list, DexPreoptImageLocations, $(my_dexpreopt_image_locations))
$(call add_json_list, PreoptBootClassPathDexFiles, $(DEXPREOPT_BOOTCLASSPATH_DEX_FILES)) $(call add_json_list, PreoptBootClassPathDexFiles, $(DEXPREOPT_BOOTCLASSPATH_DEX_FILES))
$(call add_json_list, PreoptBootClassPathDexLocations,$(DEXPREOPT_BOOTCLASSPATH_DEX_LOCATIONS)) $(call add_json_list, PreoptBootClassPathDexLocations,$(DEXPREOPT_BOOTCLASSPATH_DEX_LOCATIONS))
$(call add_json_bool, PreoptExtractedApk, $(my_preopt_for_extracted_apk)) $(call add_json_bool, PreoptExtractedApk, $(my_preopt_for_extracted_apk))