Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 84d00a4f authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge changes from topic "disable-dexpreopt-dexopt" into main am: fc9ebd26

parents 00497618 fc9ebd26
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -202,7 +202,7 @@ _board_strip_readonly_list += $(_build_broken_var_list) \

# Conditional to building on linux, as dex2oat currently does not work on darwin.
ifeq ($(HOST_OS),linux)
  WITH_DEXPREOPT := true
  WITH_DEXPREOPT ?= true
endif

# ###############################################################
+1 −16
Original line number Diff line number Diff line
@@ -58,25 +58,10 @@ DEX_PREOPT_WITH_UPDATABLE_BCP := true

# Conditional to building on linux, as dex2oat currently does not work on darwin.
ifeq ($(HOST_OS),linux)
  ifeq (eng,$(TARGET_BUILD_VARIANT))
    # For an eng build only pre-opt the boot image and system server. This gives reasonable performance
    # and still allows a simple workflow: building in frameworks/base and syncing.
    WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY ?= true
  endif
  # Add mini-debug-info to the boot classpath unless explicitly asked not to.
  ifneq (false,$(WITH_DEXPREOPT_DEBUG_INFO))
    PRODUCT_DEX_PREOPT_BOOT_FLAGS += --generate-mini-debug-info
  endif

  # Non eng linux builds must have preopt enabled so that system server doesn't run as interpreter
  # only. b/74209329
  ifeq (,$(filter eng, $(TARGET_BUILD_VARIANT)))
    ifneq (true,$(WITH_DEXPREOPT))
      ifneq (true,$(WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY))
        $(call pretty-error, DEXPREOPT must be enabled for user and userdebug builds)
      endif
    endif
  endif
endif

# Get value of a property. It is first searched from PRODUCT_VENDOR_PROPERTIES
@@ -100,7 +85,7 @@ ifeq ($(WRITE_SOONG_VARIABLES),true)
  $(call add_json_bool, DisablePreopt,                           $(call invert_bool,$(ENABLE_PREOPT)))
  $(call add_json_bool, DisablePreoptBootImages,                 $(call invert_bool,$(ENABLE_PREOPT_BOOT_IMAGES)))
  $(call add_json_list, DisablePreoptModules,                    $(DEXPREOPT_DISABLED_MODULES))
  $(call add_json_bool, OnlyPreoptBootImageAndSystemServer,      $(filter true,$(WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY)))
  $(call add_json_bool, OnlyPreoptArtBootImage            ,      $(filter true,$(WITH_DEXPREOPT_ART_BOOT_IMG_ONLY)))
  $(call add_json_bool, PreoptWithUpdatableBcp,                  $(filter true,$(DEX_PREOPT_WITH_UPDATABLE_BCP)))
  $(call add_json_bool, DontUncompressPrivAppsDex,               $(filter true,$(DONT_UNCOMPRESS_PRIV_APPS_DEXS)))
  $(call add_json_list, ModulesLoadedByPrivilegedModules,        $(PRODUCT_LOADED_BY_PRIVILEGED_MODULES))
+3 −11
Original line number Diff line number Diff line
@@ -60,19 +60,11 @@ ifeq (,$(strip $(built_dex)$(my_prebuilt_src_file)$(LOCAL_SOONG_DEX_JAR)))
  LOCAL_DEX_PREOPT :=
endif

# if WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY=true and module is not in boot class path skip
# Also preopt system server jars since selinux prevents system server from loading anything from
# /data. If we don't do this they will need to be extracted which is not favorable for RAM usage
# or performance. If my_preopt_for_extracted_apk is true, we ignore the only preopt boot image
# options.
system_server_jars := $(foreach m,$(PRODUCT_SYSTEM_SERVER_JARS),$(call word-colon,2,$(m)))
ifneq (true,$(my_preopt_for_extracted_apk))
  ifeq (true,$(WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY))
    ifeq ($(filter $(system_server_jars) $(DEXPREOPT_BOOT_JARS_MODULES),$(LOCAL_MODULE)),)
  ifeq (true,$(WITH_DEXPREOPT_ART_BOOT_IMG_ONLY))
    LOCAL_DEX_PREOPT :=
  endif
endif
endif

my_process_profile :=
my_profile_is_text_listing :=
@@ -226,7 +218,7 @@ endif
# as a failure to get manifest from an APK).
ifneq (true,$(WITH_DEXPREOPT))
  LOCAL_ENFORCE_USES_LIBRARIES := false
else ifeq (true,$(WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY))
else ifeq (true,$(WITH_DEXPREOPT_ART_BOOT_IMG_ONLY))
  LOCAL_ENFORCE_USES_LIBRARIES := false
endif

+1 −1
Original line number Diff line number Diff line
@@ -548,7 +548,7 @@ endef
# be cleaned up to not be product variables.
_readonly_late_variables := \
  DEVICE_PACKAGE_OVERLAYS \
  WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY \
  WITH_DEXPREOPT_ART_BOOT_IMG_ONLY \

# Modified internally in the build system
_readonly_late_variables += \
+38 −14
Original line number Diff line number Diff line
@@ -102,39 +102,63 @@ PRODUCT_SYSTEM_PROPERTIES += \
PRODUCT_SYSTEM_PROPERTIES += \
    ro.dalvik.vm.native.bridge?=0

# Different dexopt types for different package update/install times.
# On eng builds, make "boot" reasons only extract for faster turnaround.
ifeq (eng,$(TARGET_BUILD_VARIANT))
    PRODUCT_SYSTEM_PROPERTIES += \
        pm.dexopt.first-boot?=extract \
        pm.dexopt.boot-after-ota?=extract
else
    PRODUCT_SYSTEM_PROPERTIES += \
        pm.dexopt.first-boot?=verify \
        pm.dexopt.boot-after-ota?=verify
endif

# The install filter is speed-profile in order to enable the use of
# profiles from the dex metadata files. Note that if a profile is not provided
# or if it is empty speed-profile is equivalent to (quicken + empty app image).
# Note that `cmdline` is not strictly needed but it simplifies the management
# of compilation reason in the platform (as we have a unified, single path,
# without exceptions).
# TODO(b/243646876): Remove `pm.dexopt.post-boot`.
PRODUCT_SYSTEM_PROPERTIES += \
    pm.dexopt.post-boot?=extract \
    pm.dexopt.post-boot?=verify \
    pm.dexopt.first-boot?=verify \
    pm.dexopt.boot-after-ota?=verify \
    pm.dexopt.boot-after-mainline-update?=verify \
    pm.dexopt.install?=speed-profile \
    pm.dexopt.install-fast?=skip \
    pm.dexopt.install-bulk?=speed-profile \
    pm.dexopt.install-bulk-secondary?=verify \
    pm.dexopt.install-bulk-downgraded?=verify \
    pm.dexopt.install-bulk-secondary-downgraded?=extract \
    pm.dexopt.install-bulk-secondary-downgraded?=verify \
    pm.dexopt.bg-dexopt?=speed-profile \
    pm.dexopt.ab-ota?=speed-profile \
    pm.dexopt.inactive?=verify \
    pm.dexopt.cmdline?=verify \
    pm.dexopt.shared?=speed

ifneq (,$(filter eng,$(TARGET_BUILD_VARIANT)))
    OVERRIDE_DISABLE_DEXOPT_ALL ?= true
endif

# OVERRIDE_DISABLE_DEXOPT_ALL disables all dexpreopt (build-time) and dexopt (on-device) activities.
# This option is for faster iteration during development and should never be enabled for production.
ifneq (,$(filter true,$(OVERRIDE_DISABLE_DEXOPT_ALL)))
  PRODUCT_SYSTEM_PROPERTIES += \
    pm.dexopt.post-boot=skip \
    pm.dexopt.first-boot=skip \
    pm.dexopt.boot-after-ota=skip \
    pm.dexopt.boot-after-mainline-update=skip \
    pm.dexopt.install=skip \
    pm.dexopt.install-fast=skip \
    pm.dexopt.install-bulk=skip \
    pm.dexopt.install-bulk-secondary=skip \
    pm.dexopt.install-bulk-downgraded=skip \
    pm.dexopt.install-bulk-secondary-downgraded=skip \
    pm.dexopt.bg-dexopt=skip \
    pm.dexopt.ab-ota=skip \
    pm.dexopt.inactive=skip \
    pm.dexopt.cmdline=skip \
    pm.dexopt.shared=skip

  PRODUCT_SYSTEM_PROPERTIES += dalvik.vm.disable-odrefresh=true

  # Disable all dexpreopt activities except for the ART boot image.
  # We have to dexpreopt the ART boot image because they are used by ART tests. This should not
  # be too much of a problem for platform developers because a change to framework code should not
  # trigger dexpreopt for the ART boot image.
  WITH_DEXPREOPT_ART_BOOT_IMG_ONLY := true
endif

# Enable resolution of startup const strings.
PRODUCT_SYSTEM_PROPERTIES += \
    dalvik.vm.dex2oat-resolve-startup-strings=true