diff --git a/core/Makefile b/core/Makefile index 47ecbd9763..4a1118cb8a 100644 --- a/core/Makefile +++ b/core/Makefile @@ -5289,6 +5289,67 @@ INTERNAL_ALLIMAGES_FILES := \ $(INTERNAL_SYSTEM_DLKMIMAGE_FILES) \ $(INTERNAL_PVMFWIMAGE_FILES) \ +FULLER_ALLIMAGES_FILES := $(INTERNAL_ALLIMAGES_FILES) \ + $(filter \ + $(TARGET_DEBUG_RAMDISK_OUT)/% \ + $(TARGET_RAMDISK_OUT)/% \ + $(TARGET_RECOVERY_OUT)/% \ + $(TARGET_VENDOR_KERNEL_RAMDISK_OUT)/% \ + $(TARGET_VENDOR_RAMDISK_OUT)/% \ + ,$(ALL_DEFAULT_INSTALLED_MODULES)) + +define write-allimages-file-list + $(file >$(PRODUCT_OUT)/allimages-file-list.txt,$(sort $(FULLER_ALLIMAGES_FILES))) +endef + +.PHONY: allimages-file-list +allimages-file-list: $(call write-allimages-file-list) + +ALL_SYSCONFIG_FILES := $(filter \ + $(TARGET_OUT)/etc/classpaths/systemserverclasspath.pb \ + $(TARGET_OUT)/etc/sysconfig/% \ + $(TARGET_OUT_SYSTEM_EXT)/etc/sysconfig/% \ + $(TARGET_OUT_PRODUCT)/etc/sysconfig/% \ + $(TARGET_OUT_VENDOR)/etc/sysconfig/% \ + $(TARGET_OUT_ODM)/etc/sysconfig/% \ + $(TARGET_OUT)/etc/permissions/% \ + $(TARGET_OUT_SYSTEM_EXT)/etc/permissions/% \ + $(TARGET_OUT_PRODUCT)/etc/permissions/% \ + $(TARGET_OUT_VENDOR)/etc/permissions/% \ + $(TARGET_OUT_ODM)/etc/permissions/% \ + $(TARGET_OUT)/etc/default-permissions/% \ + $(TARGET_OUT_SYSTEM_EXT)/etc/default-permissions/% \ + $(TARGET_OUT_PRODUCT)/etc/default-permissions/% \ + $(TARGET_OUT_VENDOR)/etc/default-permissions/% \ + $(TARGET_OUT_ODM)/etc/default-permissions/% \ + ,$(INTERNAL_ALLIMAGES_FILES)) + +.PHONY: sysconfigs +sysconfigs: $(ALL_SYSCONFIG_FILES) + +ALL_VINTF_FILES := $(filter \ + $(TARGET_OUT)/etc/vintf/% \ + $(TARGET_OUT_SYSTEM_EXT)/etc/vintf/% \ + $(TARGET_OUT_PRODUCT)/etc/vintf/% \ + $(TARGET_OUT_VENDOR)/etc/vintf/% \ + $(TARGET_OUT_ODM)/etc/vintf/% \ + ,$(INTERNAL_ALLIMAGES_FILES)) + +.PHONY: vintfs +vintfs: $(ALL_VINTF_FILES) + +adevtool-state-collection-inputs: \ + allimages-file-list \ + build-props \ + $(INSTALLED_RECOVERY_BUILD_PROP_TARGET) \ + module-info \ + selinux_policy \ + sepolicy.recovery \ + sysconfigs \ + vintfs \ + +.PHONY: adevtool-state-collection-inputs + # ----------------------------------------------------------------- # Run apex_sepolicy_tests for all installed APEXes @@ -5812,6 +5873,7 @@ INTERNAL_OTATOOLS_MODULES := \ delta_generator \ e2fsck \ e2fsdroid \ + fastboot \ fc_sort \ fec \ fsck.erofs \ @@ -5886,6 +5948,78 @@ INTERNAL_OTATOOLS_FILES := \ .PHONY: otatools otatools: $(INTERNAL_OTATOOLS_FILES) +# For each module, recursively resolve its host shared library dependencies. Then we have a full +# list of modules whose installed files need to be packed. +INTERNAL_OTATOOLS_MODULES_WITH_DEPS := \ + $(sort $(INTERNAL_OTATOOLS_MODULES) \ + $(foreach m,$(INTERNAL_OTATOOLS_MODULES),$(call get-all-shared-libs-deps,$(m)))) + +INTERNAL_OTATOOLS_PACKAGE_FILES := \ + $(filter $(HOST_OUT)/%,$(call module-installed-files,$(INTERNAL_OTATOOLS_MODULES_WITH_DEPS))) + +INTERNAL_OTATOOLS_PACKAGE_FILES += \ + $(sort $(shell find build/make/target/product/security -type f -name "*.x509.pem" -o \ + -name "*.pk8")) + +ifneq (,$(wildcard packages/modules)) +INTERNAL_OTATOOLS_PACKAGE_FILES += \ + $(sort $(shell find packages/modules -type f -name "*.x509.pem" -o -name "*.pk8" -o -name \ + "key.pem")) +endif + +ifneq (,$(wildcard device)) +INTERNAL_OTATOOLS_PACKAGE_FILES += \ + $(sort $(shell find device $(wildcard vendor) -type f -name "*.pk8" -o -name "verifiedboot*" -o \ + -name "*.pem" -o -name "oem*.prop" -o -name "*.avbpubkey")) +endif +ifneq (,$(wildcard external/avb)) +INTERNAL_OTATOOLS_PACKAGE_FILES += \ + $(sort $(shell find external/avb/test/data -type f -name "testkey_*.pem" -o \ + -name "atx_metadata.bin")) +endif + +# Factory images +INTERNAL_OTATOOLS_PACKAGE_FILES += \ + device/common/clear-factory-images-variables.sh \ + device/common/generate-factory-images-common.sh + +# GrapheneOS scripts +INTERNAL_OTATOOLS_PACKAGE_FILES += \ + script/common.sh \ + script/decrypt-keys \ + script/encrypt-keys \ + script/generate-metadata \ + script/generate-release.sh \ + script/generate-delta.sh + +INTERNAL_OTATOOLS_RELEASETOOLS := \ + $(shell find build/make/tools/releasetools -name "*.pyc" -prune -o \ + \( -type f -o -type l \) -print | sort) + +BUILT_OTATOOLS_PACKAGE := $(PRODUCT_OUT)/otatools.zip +$(BUILT_OTATOOLS_PACKAGE): PRIVATE_ZIP_ROOT := $(call intermediates-dir-for,PACKAGING,otatools)/otatools +$(BUILT_OTATOOLS_PACKAGE): PRIVATE_OTATOOLS_PACKAGE_FILES := $(INTERNAL_OTATOOLS_PACKAGE_FILES) +$(BUILT_OTATOOLS_PACKAGE): PRIVATE_OTATOOLS_RELEASETOOLS := $(INTERNAL_OTATOOLS_RELEASETOOLS) +$(BUILT_OTATOOLS_PACKAGE): $(INTERNAL_OTATOOLS_PACKAGE_FILES) $(INTERNAL_OTATOOLS_RELEASETOOLS) +$(BUILT_OTATOOLS_PACKAGE): $(SOONG_ZIP) $(ZIP2ZIP) + @echo "Package OTA tools: $@" + rm -rf $@ $(PRIVATE_ZIP_ROOT) + mkdir -p $(dir $@) + $(call copy-files-with-structure,$(PRIVATE_OTATOOLS_PACKAGE_FILES),$(HOST_OUT)/,$(PRIVATE_ZIP_ROOT)) + $(call copy-files-with-structure,$(PRIVATE_OTATOOLS_RELEASETOOLS),build/make/tools/,$(PRIVATE_ZIP_ROOT)) + cp $(SOONG_ZIP) $(ZIP2ZIP) $(MERGE_ZIPS) $(PRIVATE_ZIP_ROOT)/bin/ + $(SOONG_ZIP) -o $@ -C $(PRIVATE_ZIP_ROOT) -D $(PRIVATE_ZIP_ROOT) + +$(call declare-1p-container,$(BUILT_OTATOOLS_PACKAGE),build) +$(call declare-container-license-deps,$(INTERNAL_OTATOOLS_PACKAGE_FILES) $(INTERNAL_OTATOOLS_RELEASETOOLS),$(BUILT_OTATOOLS_PACKAGE):) + +.PHONY: otatools-package +otatools-package: $(BUILT_OTATOOLS_PACKAGE) + +$(call dist-for-goals, otatools-package, \ + $(BUILT_OTATOOLS_PACKAGE) \ +) + endif # build_otatools_package # ----------------------------------------------------------------- diff --git a/core/android_soong_config_vars.mk b/core/android_soong_config_vars.mk index 6364d03f73..dda87400dd 100644 --- a/core/android_soong_config_vars.mk +++ b/core/android_soong_config_vars.mk @@ -408,12 +408,6 @@ ifneq ($(filter StorageManager, $(PRODUCT_PACKAGES)),) $(call soong_config_set_bool,ci_tests,uses_storage_manager_tests,true) endif -ifneq ($(BUILD_OS),darwin) - ifneq ($(TARGET_SKIP_OTATOOLS_PACKAGE),true) - $(call soong_config_set_bool,otatools,use_otatools_package,true) - endif -endif - # Variables for qcom bluetooth modules. $(call soong_config_set,qcom_bluetooth,TARGET_BLUETOOTH_UART_DEVICE,$(TARGET_BLUETOOTH_UART_DEVICE)) $(call soong_config_set_bool,qcom_bluetooth,BOARD_HAVE_QCOM_FM,$(if $(filter true,$(BOARD_HAVE_QCOM_FM)),true,false)) diff --git a/core/board_config.mk b/core/board_config.mk index 86ac3fe9dd..6890ad6f32 100644 --- a/core/board_config.mk +++ b/core/board_config.mk @@ -199,10 +199,7 @@ _board_true_false_vars := $(_build_broken_var_list) _board_strip_readonly_list += $(_build_broken_var_list) \ BUILD_BROKEN_NINJA_USES_ENV_VARS -# Conditional to building on linux, as dex2oat currently does not work on darwin. -ifeq ($(HOST_OS),linux) - WITH_DEXPREOPT ?= true -endif +WITH_DEXPREOPT := true # ############################################################### # Broken build defaults diff --git a/core/build_id.mk b/core/build_id.mk index 253ab28154..88a43b5d1e 100644 --- a/core/build_id.mk +++ b/core/build_id.mk @@ -1,3 +1,8 @@ +ifneq ($(ALLOW_BUILD_ID_MK_INCLUSION), 1) + # do not allow including this file from unexpected places, since that would break per-product + # BUILD_ID. See core/version_util.mk + $(error ALLOW_BUILD_ID_MK_INCLUSION is not set) +endif # # Copyright (C) 2008 The Android Open Source Project # diff --git a/core/combo/TARGET_linux-arm.mk b/core/combo/TARGET_linux-arm.mk index 35a62faf29..5850126d8e 100644 --- a/core/combo/TARGET_linux-arm.mk +++ b/core/combo/TARGET_linux-arm.mk @@ -33,7 +33,7 @@ KNOWN_ARMv8_CORES := cortex-a53 cortex-a53.a57 cortex-a55 cortex-a73 cortex-a75 cortex-a76 KNOWN_ARMv8_CORES += kryo kryo385 exynos-m1 exynos-m2 -KNOWN_ARMv82a_CORES := cortex-a55 cortex-a75 kryo385 +KNOWN_ARMv82a_CORES := cortex-a55 cortex-a75 cortex-a76 kryo385 ifeq (,$(strip $(TARGET_$(combo_2nd_arch_prefix)CPU_VARIANT))) TARGET_$(combo_2nd_arch_prefix)CPU_VARIANT := generic diff --git a/core/config_sanitizers.mk b/core/config_sanitizers.mk index c0f2c6893f..cf9a55f1a4 100644 --- a/core/config_sanitizers.mk +++ b/core/config_sanitizers.mk @@ -575,3 +575,9 @@ ifneq ($(findstring fsanitize,$(my_cflags)),) endif endif endif + +ifeq ($(filter signed-integer-overflow integer undefined,$(my_sanitize)),) + ifeq ($(filter -ftrapv,$(my_cflags)),) + my_cflags += -fwrapv + endif +endif diff --git a/core/dex_preopt_config.mk b/core/dex_preopt_config.mk index 596dfe7443..cb43c866cc 100644 --- a/core/dex_preopt_config.mk +++ b/core/dex_preopt_config.mk @@ -24,7 +24,7 @@ else endif # The default value for LOCAL_DEX_PREOPT -DEX_PREOPT_DEFAULT ?= $(ENABLE_PREOPT) +DEX_PREOPT_DEFAULT := true # Whether to fail immediately if verify_uses_libraries check fails, or to keep # going and restrict dexpreopt to not compile any code for the failed module. @@ -56,12 +56,9 @@ SYSTEM_OTHER_ODEX_FILTER ?= \ # Global switch to control if updatable boot jars are included in dexpreopt. DEX_PREOPT_WITH_UPDATABLE_BCP := true -# Conditional to building on linux, as dex2oat currently does not work on darwin. -ifeq ($(HOST_OS),linux) - # 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 +# 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 # Get value of a property. It is first searched from PRODUCT_VENDOR_PROPERTIES diff --git a/core/envsetup.mk b/core/envsetup.mk index 7a264859dd..dd0ff385a9 100644 --- a/core/envsetup.mk +++ b/core/envsetup.mk @@ -75,7 +75,7 @@ CORRECT_BUILD_ENV_SEQUENCE_NUMBER := 13 # --------------------------------------------------------------- # The product defaults to generic on hardware ifeq ($(TARGET_PRODUCT),) -TARGET_PRODUCT := aosp_arm64 +TARGET_PRODUCT := sdk_phone64_x86_64 endif @@ -144,8 +144,7 @@ BUILD_OS := $(HOST_OS) # We can do the cross-build only on Linux ifeq ($(HOST_OS),linux) - # Windows has been the default host_cross OS - ifeq (,$(filter-out windows,$(HOST_CROSS_OS))) + ifeq ($(HOST_CROSS_OS),windows) # We can only create static host binaries for Linux, so if static host # binaries are requested, turn off Windows cross-builds. ifeq ($(BUILD_HOST_static),) @@ -158,7 +157,7 @@ ifeq ($(HOST_OS),linux) ifeq (,$(HOST_CROSS_ARCH)) $(error HOST_CROSS_ARCH missing.) endif - else + else ifneq ($(HOST_CROSS_OS),) $(error Unsupported HOST_CROSS_OS $(HOST_CROSS_OS)) endif else ifeq ($(HOST_OS),darwin) diff --git a/core/layoutlib_data.mk b/core/layoutlib_data.mk index 792a17ab7e..5a6553a2cf 100644 --- a/core/layoutlib_data.mk +++ b/core/layoutlib_data.mk @@ -77,22 +77,13 @@ $(call dist-for-goals,layoutlib,$(LAYOUTLIB_BUILD_PROP)/layoutlib-build.prop:lay LAYOUTLIB_RES := $(call intermediates-dir-for,PACKAGING,layoutlib-res,HOST,COMMON) LAYOUTLIB_RES_FILES := $(shell find frameworks/base/core/res/res -type f -not -path 'frameworks/base/core/res/res/values-m[nc]c*' | sort) EMULATED_OVERLAYS_FILES := $(shell find frameworks/base/packages/overlays/*/res/ | sort) -LAYOUTLIB_SUPPORTED_DEVICES := raviole/oriole raviole/raven bluejay/bluejay pantah/panther pantah/cheetah lynx/lynx felix/felix shusky/shiba shusky/husky akita/akita caimito/tokay caimito/caiman caimito/komodo comet/comet tangorpro/tangorpro -LAYOUTLIB_DEVICE_OVERLAYS_FILES := $(addsuffix /overlay/frameworks/base/core/res/res/values/*, $(addprefix device/google/, $(LAYOUTLIB_SUPPORTED_DEVICES))) -LAYOUTLIB_DEVICE_OVERLAYS_FILES := $(shell find $(LAYOUTLIB_DEVICE_OVERLAYS_FILES) | sort) +LAYOUTLIB_DEVICE_OVERLAYS_FILES := $(LAYOUTLIB_RES)/layoutlib-res.zip: $(SOONG_ZIP) $(HOST_OUT_EXECUTABLES)/aapt2 $(LAYOUTLIB_RES_FILES) $(EMULATED_OVERLAYS_FILES) $(LAYOUTLIB_DEVICE_OVERLAYS_FILES) frameworks/layoutlib/overlay_codenames.txt rm -rf $@ echo $(LAYOUTLIB_RES_FILES) > $(LAYOUTLIB_RES)/filelist_res.txt $(SOONG_ZIP) -C frameworks/base/core/res -l $(LAYOUTLIB_RES)/filelist_res.txt -o $(LAYOUTLIB_RES)/temp_res.zip echo $(EMULATED_OVERLAYS_FILES) > $(LAYOUTLIB_RES)/filelist_emulated_overlays.txt $(SOONG_ZIP) -C frameworks/base/packages -l $(LAYOUTLIB_RES)/filelist_emulated_overlays.txt -o $(LAYOUTLIB_RES)/temp_emulated_overlays.zip - for line in $$(cut -f 1 frameworks/layoutlib/overlay_codenames.txt); \ - do splitLine=($${line//:/ }) \ - origin_dir=device/google/*/$${splitLine[0]}/overlay/frameworks/base/core/res/res/values; \ - target_dir=$(LAYOUTLIB_RES)/overlays/$${splitLine[1]}/res/; \ - mkdir -p $$target_dir; \ - cp -r $$origin_dir $$target_dir; \ - done $(SOONG_ZIP) -C $(LAYOUTLIB_RES) -D $(LAYOUTLIB_RES)/overlays/ -o $(LAYOUTLIB_RES)/temp_device_overlays.zip rm -rf $(LAYOUTLIB_RES)/data && unzip -q -d $(LAYOUTLIB_RES)/data $(LAYOUTLIB_RES)/temp_res.zip unzip -q -d $(LAYOUTLIB_RES)/data $(LAYOUTLIB_RES)/temp_emulated_overlays.zip diff --git a/core/main.mk b/core/main.mk index 825f1f455e..f44732ab17 100644 --- a/core/main.mk +++ b/core/main.mk @@ -48,7 +48,7 @@ $(KATI_obsolete_var FILE_NAME_TAG,https://android.googlesource.com/platform/buil .KATI_RESTAT: $(BUILD_NUMBER_FILE) .KATI_RESTAT: $(BUILD_HOSTNAME_FILE) -DATE_FROM_FILE := date -d @$(BUILD_DATETIME_FROM_FILE) +DATE_FROM_FILE := date -ud @$(BUILD_DATETIME_FROM_FILE) .KATI_READONLY := DATE_FROM_FILE @@ -1486,6 +1486,10 @@ else ifeq ($(TARGET_BUILD_UNBUNDLED),$(TARGET_BUILD_UNBUNDLED_IMAGE)) # can include java-related targets that would cause building framework java # sources in a droidcore full build. + $(call dist-for-goals, droidcore, \ + $(BUILT_OTATOOLS_PACKAGE) \ + ) + # We dist the following targets for droidcore-unbundled (and droidcore since # droidcore depends on droidcore-unbundled). The droidcore-unbundled target # is a subset of droidcore. It can be used used for an unbundled build to diff --git a/core/soong_config.mk b/core/soong_config.mk index 44aced2812..0bfa9348e6 100644 --- a/core/soong_config.mk +++ b/core/soong_config.mk @@ -66,6 +66,8 @@ $(call add_json_str, DeviceArchVariant, $(TARGET_ARCH_VARIANT)) $(call add_json_str, DeviceCpuVariant, $(TARGET_CPU_VARIANT)) $(call add_json_list, DeviceAbi, $(TARGET_CPU_ABI) $(TARGET_CPU_ABI2)) +$(call add_json_bool, Device_has_arm_mte, $(TARGET_HAS_ARM_MTE)) + $(call add_json_str, DeviceSecondaryArch, $(TARGET_2ND_ARCH)) $(call add_json_str, DeviceSecondaryArchVariant, $(TARGET_2ND_ARCH_VARIANT)) $(call add_json_str, DeviceSecondaryCpuVariant, $(TARGET_2ND_CPU_VARIANT)) diff --git a/core/sysprop.mk b/core/sysprop.mk index 4c040e497e..5745cca0fb 100644 --- a/core/sysprop.mk +++ b/core/sysprop.mk @@ -273,6 +273,9 @@ ALL_INSTALLED_BUILD_PROP_FILES := \ $(INSTALLED_SYSTEM_EXT_BUILD_PROP_TARGET) \ $(INSTALLED_RAMDISK_BUILD_PROP_TARGET) +.PHONY: build-props +build-props: $(ALL_INSTALLED_BUILD_PROP_FILES) + # $1 installed file path, e.g. out/target/product/vsoc_x86_64/system/build.prop define is-build-prop $(if $(findstring $1,$(ALL_INSTALLED_BUILD_PROP_FILES)),Y) diff --git a/core/version_util.mk b/core/version_util.mk index 8ab36b773b..70875e2cf5 100644 --- a/core/version_util.mk +++ b/core/version_util.mk @@ -40,9 +40,15 @@ # the build.prop target also wants INTERNAL_BUILD_ID_MAKEFILE to be set # if the file exists. # -INTERNAL_BUILD_ID_MAKEFILE := $(wildcard $(BUILD_SYSTEM)/build_id.mk) -ifdef INTERNAL_BUILD_ID_MAKEFILE - include $(INTERNAL_BUILD_ID_MAKEFILE) +BUILD_ID := $(BUILD_ID_$(TARGET_PRODUCT)) + +ifeq ($(BUILD_ID),) + INTERNAL_BUILD_ID_MAKEFILE := $(wildcard $(BUILD_SYSTEM)/build_id.mk) + ifdef INTERNAL_BUILD_ID_MAKEFILE + ALLOW_BUILD_ID_MK_INCLUSION := 1 + include $(INTERNAL_BUILD_ID_MAKEFILE) + ALLOW_BUILD_ID_MK_INCLUSION := 0 + endif endif ifdef TARGET_PLATFORM_VERSION @@ -55,6 +61,11 @@ ifdef PLATFORM_SECURITY_PATCH $(error Do not set PLATFORM_SECURITY_PATCH directly. Use RELEASE_PLATFORM_SECURITY_PATCH. value: $(PLATFORM_SECURITY_PATCH)) endif PLATFORM_SECURITY_PATCH := $(RELEASE_PLATFORM_SECURITY_PATCH) + +ifneq ($(PLATFORM_SECURITY_PATCH_$(TARGET_PRODUCT)),) + PLATFORM_SECURITY_PATCH := $(PLATFORM_SECURITY_PATCH_$(TARGET_PRODUCT)) +endif + .KATI_READONLY := PLATFORM_SECURITY_PATCH ifdef PLATFORM_SDK_VERSION @@ -234,7 +245,7 @@ ifndef BUILD_DATETIME BUILD_DATETIME := $(shell date +%s) endif -DATE := date -d @$(BUILD_DATETIME) +DATE := date -ud @$(BUILD_DATETIME) .KATI_READONLY := DATE # Everything should be using BUILD_DATETIME_FROM_FILE instead. diff --git a/envsetup.sh b/envsetup.sh index e34a365f6a..c6e0fcbc57 100644 --- a/envsetup.sh +++ b/envsetup.sh @@ -15,6 +15,11 @@ # gettop is duplicated here and in shell_utils.mk, because it's difficult # to find shell_utils.make without it for all the novel ways this file can be # sourced. Other common functions should only be in one place or the other. + +umask 022 +# use shell built-in instead of the separate program which is missing by default on some distros +alias which='command -v' + function _gettop_once { local TOPFILE=build/make/core/envsetup.mk @@ -444,12 +449,52 @@ function print_lunch_menu() echo } +function maybe_source_extra_commands() { + local PRODUCT=$1 + local SCRIPT_NAME="cmds-for-envsetup.sh" + + [[ $PRODUCT = sdk_* || $PRODUCT = aosp_* ]] && { + # skip for products that are known to not have this extra script + return + } + + local EXTRA_CMDS_ARR=(vendor/*/"$PRODUCT"/"$SCRIPT_NAME") + + [[ ${#EXTRA_CMDS_ARR[@]} == 1 ]] || { + echo "More than one $SCRIPT_NAME file for $PRODUCT: ${EXTRA_CMDS_ARR[*]}" + read -s + exit 1 + } + + local EXTRA_CMDS + if [ -n "$ZSH_VERSION" ]; then + EXTRA_CMDS=${EXTRA_CMDS_ARR[1]} + else + EXTRA_CMDS=${EXTRA_CMDS_ARR[0]} + fi + + [[ $EXTRA_CMDS == "vendor/*/$PRODUCT/$SCRIPT_NAME" ]] && { + # wildcard didn't expand, which means that SCRIPT_NAME is missing + return + } + + [[ -n "${ANDROID_QUIET_BUILD:-}" ]] || { + echo "============================================" + echo "Commands from $EXTRA_CMDS:" + cat $EXTRA_CMDS + echo "============================================" + } + source $EXTRA_CMDS +} + function _lunch_meat() { local product=$1 local release=$2 local variant=$3 + maybe_source_extra_commands $product $variant + TARGET_PRODUCT=$product \ TARGET_RELEASE=$release \ TARGET_BUILD_VARIANT=$variant \ @@ -581,11 +626,11 @@ function lunch() product=$1 release=$2 if [[ -z $release ]]; then - release=trunk_staging + release=cur fi variant=$3 if [[ -z $variant ]]; then - variant=eng + variant=userdebug fi fi @@ -1185,3 +1230,15 @@ addcompletions if [[ "$USE_LEFTOVERS" -eq 1 ]]; then leftovers fi + +export LANG=C.UTF-8 +export BUILD_DATETIME=${BUILD_DATETIME:-$(cat ${OUT_DIR:-out}/build_date.txt 2>/dev/null || date -u +%s)} +export BUILD_NUMBER=${BUILD_NUMBER:-$(cat ${OUT_DIR:-out}/soong/build_number.txt 2>/dev/null || date -u -d @$BUILD_DATETIME +%Y%m%d00)} +export BUILD_USERNAME=android-user +export BUILD_HOSTNAME=r-0123456789abcdef-0123 + +echo "export BUILD_DATETIME=$BUILD_DATETIME BUILD_NUMBER=$BUILD_NUMBER" + +alias adevtool='vendor/adevtool/bin/run' +alias adto='vendor/adevtool/bin/run' + diff --git a/target/board/BoardConfigMainlineCommon.mk b/target/board/BoardConfigMainlineCommon.mk index b5e3dc2b1e..68699624b2 100644 --- a/target/board/BoardConfigMainlineCommon.mk +++ b/target/board/BoardConfigMainlineCommon.mk @@ -27,10 +27,6 @@ BOARD_USES_METADATA_PARTITION := true # 64 bit mediadrmserver TARGET_ENABLE_MEDIADRM_64 := true -# Puts odex files on system_other, as well as causing dex files not to get -# stripped from APKs. -BOARD_USES_SYSTEM_OTHER_ODEX := true - # Audio: must using XML format for Treblized devices USE_XML_AUDIO_POLICY_CONF := 1 diff --git a/target/product/aosp_base_telephony.mk b/target/product/aosp_base_telephony.mk index 4667e38562..8e5cc4cbdf 100644 --- a/target/product/aosp_base_telephony.mk +++ b/target/product/aosp_base_telephony.mk @@ -16,5 +16,5 @@ $(call inherit-product, $(SRC_TARGET_DIR)/product/full_base_telephony.mk) PRODUCT_PACKAGES += \ - messaging \ + Messaging \ Stk diff --git a/target/product/aosp_product.mk b/target/product/aosp_product.mk index 00b4e6a932..c54d58ddf6 100644 --- a/target/product/aosp_product.mk +++ b/target/product/aosp_product.mk @@ -26,11 +26,12 @@ PRODUCT_PRODUCT_PROPERTIES += \ ro.config.ringtone?=Ring_Synth_04.ogg \ ro.config.notification_sound?=pixiedust.ogg \ ro.com.android.dataroaming?=true \ + ro.boot.vendor.overlay.theme=com.android.internal.systemui.navbar.gestural # More AOSP packages PRODUCT_PACKAGES += \ initial-package-stopped-states-aosp.xml \ - messaging \ + Messaging \ PhotoTable \ preinstalled-packages-platform-aosp-product.xml \ ThemePicker \ diff --git a/target/product/handheld_product.mk b/target/product/handheld_product.mk index dde952e4fd..8a5602d91a 100644 --- a/target/product/handheld_product.mk +++ b/target/product/handheld_product.mk @@ -35,6 +35,7 @@ PRODUCT_PACKAGES += \ Music \ PdfViewerGOS \ preinstalled-packages-platform-handheld-product.xml \ + SpeechServicesApp SettingsIntelligence \ ThemePicker \ ThemesStub \ diff --git a/target/product/handheld_system.mk b/target/product/handheld_system.mk index 94386691dd..dbd5febda5 100644 --- a/target/product/handheld_system.mk +++ b/target/product/handheld_system.mk @@ -62,6 +62,7 @@ PRODUCT_PACKAGES += \ MmsService \ MtpService \ MusicFX \ + NetworkLocation \ PacProcessor \ preinstalled-packages-platform-handheld-system.xml \ PrintRecommendationService \ diff --git a/target/product/memtag-common.mk b/target/product/memtag-common.mk index 829cb41c93..7592d8be5c 100644 --- a/target/product/memtag-common.mk +++ b/target/product/memtag-common.mk @@ -28,3 +28,6 @@ PRODUCT_MEMTAG_HEAP_ASYNC_DEFAULT_INCLUDE_PATHS := \ system/bpf \ system/netd/netutil_wrappers \ system/netd/server + +PRODUCT_MEMTAG_HEAP_EXCLUDE_PATHS := \ + frameworks/native/services/surfaceflinger diff --git a/target/product/runtime_libart.mk b/target/product/runtime_libart.mk index 71138ac560..59d1a4d289 100644 --- a/target/product/runtime_libart.mk +++ b/target/product/runtime_libart.mk @@ -94,7 +94,7 @@ endif # # The thermal cutoff value is currently set to THERMAL_STATUS_MODERATE. PRODUCT_SYSTEM_PROPERTIES += \ - dalvik.vm.usejit=true \ + dalvik.vm.usejit=false \ dalvik.vm.dexopt.secondary=true \ dalvik.vm.dexopt.thermal-cutoff=2 \ dalvik.vm.appimageformat=lz4 @@ -110,40 +110,23 @@ PRODUCT_SYSTEM_PROPERTIES += \ # without exceptions). # TODO(b/243646876): Remove `pm.dexopt.post-boot`. PRODUCT_SYSTEM_PROPERTIES += \ - 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?=verify \ - pm.dexopt.bg-dexopt?=speed-profile \ - pm.dexopt.ab-ota?=speed-profile \ - pm.dexopt.inactive?=verify \ - pm.dexopt.cmdline?=verify \ + pm.dexopt.post-boot?=speed \ + pm.dexopt.first-boot=speed \ + pm.dexopt.boot-after-ota=speed-profile \ + pm.dexopt.boot-after-mainline-update?=speed \ + pm.dexopt.install?=speed \ + pm.dexopt.install-fast?=speed \ + pm.dexopt.install-bulk?=speed \ + pm.dexopt.install-bulk-secondary?=speed \ + pm.dexopt.install-bulk-downgraded?=speed \ + pm.dexopt.install-bulk-secondary-downgraded?=speed \ + pm.dexopt.bg-dexopt?=speed \ + pm.dexopt.ab-ota?=speed \ + pm.dexopt.inactive?=speed \ + pm.dexopt.cmdline?=speed \ 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 += \ - dalvik.vm.disable-art-service-dexopt=true \ - 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 - $(call soong_config_set_bool,PrebuiltGmsCore,ExcludeExtractApk,true) -endif +WITH_DEXPREOPT_ART_BOOT_IMG_ONLY := false # Enable resolution of startup const strings. PRODUCT_SYSTEM_PROPERTIES += \ diff --git a/target/product/security/gmscompat_lib.pk8 b/target/product/security/gmscompat_lib.pk8 new file mode 100644 index 0000000000..f7eb94a8c3 Binary files /dev/null and b/target/product/security/gmscompat_lib.pk8 differ diff --git a/target/product/security/gmscompat_lib.x509.pem b/target/product/security/gmscompat_lib.x509.pem new file mode 100644 index 0000000000..7b3fd9f09e --- /dev/null +++ b/target/product/security/gmscompat_lib.x509.pem @@ -0,0 +1,35 @@ +-----BEGIN CERTIFICATE----- +MIIGDTCCA/WgAwIBAgIURpE5L0vCL8DYmqsY6LvWU0NCV0owDQYJKoZIhvcNAQEL +BQAwgZQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQH +DA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQLDAdBbmRy +b2lkMRAwDgYDVQQDDAdBbmRyb2lkMSIwIAYJKoZIhvcNAQkBFhNhbmRyb2lkQGFu +ZHJvaWQuY29tMCAXDTI1MTAyMDE4MjgwMVoYDzIwNTMwMzA3MTgyODAxWjCBlDEL +MAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1vdW50 +YWluIFZpZXcxEDAOBgNVBAoMB0FuZHJvaWQxEDAOBgNVBAsMB0FuZHJvaWQxEDAO +BgNVBAMMB0FuZHJvaWQxIjAgBgkqhkiG9w0BCQEWE2FuZHJvaWRAYW5kcm9pZC5j +b20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDhi5UeXnz2jKw1F311 +wL7vWFOLG+2AFnnjiqvpTFejPP5yVtfDCSE8uzn7sB5aVGD1OYP8qymyy8T+5OOX +LMQTWW+MZ0u6fdLqr8RuvFbmfFmcF4WYUUTeFEjivI/op6GJVvSVBlr1E0xagmEW +z0642jIac/ktHlz2+8L3MZXgDkchmd4j2EKswkjG1DmqIKEY/rFE4YHxaFJ63xKW +FcBrz99swU3/XEicOeG9E9ogCvrsYcsjtGFMwnaoa0ldoI+vqVxgeiS5z7t+1EBW +YcD5b2xMdfK5Y8kh2oWyXQ70vLskOEvqNNI7eoTNtVV4p+RnQbd2L8zhv2ves7Go +UbwVk+UTWlJOJoQqjQiCl1KPNJ6NSuUMlBxJt6AhW+jgoJX3mR2q7FyahHQ4q10l +GaoIXf11jqkTREuhfNuJ1FQ5RcfvGfP8FmwueS4qAPjBC4XBjtxq6GSTr4FX5Z5r +r+5M3zA0u3TBkbN8XBuW8zk97L/xDt8UH06WG65JrGLUAvzdD4lv78UkTsCld9iL +woDeMmzRJqemignTD8BhvLPL4OQF0zmgtJpr8cajzjU7WaKnuOr2QkeDEbXJ9Nng +91yJmPoOb4CQmJOelgMYW1xhXMMEBEpmOJ6kFNRPs5ra03D4i55NcRZSnGU6cfCs +SMp4sCTXHIoE33Sn23Vwd0W8yQIDAQABo1MwUTAdBgNVHQ4EFgQUHZ36rAKOm8hs +1iOEjg3dUf6IHl0wHwYDVR0jBBgwFoAUHZ36rAKOm8hs1iOEjg3dUf6IHl0wDwYD +VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAfcL63Ncu1eM2EfngU0Lc +d6mkhyiuR4E1BNJwcnlRisLZ5PJLfmgJrtdDRcj1MGizFBYFMzXGBsXsHjFQmc35 +3vP4HaQX7T8G2fGT5MtuQ9HSOPrSQgGHzUA9HPnn7vMkNhivQP7H9QaeOtRvTojt +nLq+VqkwMXpvBw6XWyFHGxwGji2sfB1w62Q6ABlRCnyGSVSJe71wRTjPKEOCK3oU +6Z6/gUDFX6bvGwxKdJf7O0miZPxC8XCPTVL8Z7sqED9IP1OZnXwTWKY2a9Uhxgsg +Yq4BGuQ4pfiJcCT1Q12Nxtl3pkUHkUyFlEynBmuQjQ05GpXOdRnj7cqO2JaIXfdP +sKdKnRKD2GltYbbQA8J5M4H+IcTmDCcTIxMups9c8+2Qtl4Ay1tQ2vJG2ItLj7iw +qeCjmerAzBrnIODOOFTL68kCMFL9mFwla857veH+Atpn8xRgz5EoiNutCgKyiW3J +9/WwP019Dan3+FlrCwmIgJzXzML6q9z/G628lIaxRpkU5ItI7AF/eROe6n2JGpyI +/IdGh+A/lB/mPNvlKQVCuhP9BDYoCHnZJ4N3phypGEuGxBEP9fHarJT4OqP0frBT +eIYImEZDCeZosmAP8iV1c3VbHYelpD9icH5WBzPqIeXIZd/u3gx+OAWZa2WF6QzA +4Zu2DO2SkuXrnHtyWpEt03g= +-----END CERTIFICATE----- diff --git a/target/product/sysconfig/preinstalled-packages-platform-handheld-product.xml b/target/product/sysconfig/preinstalled-packages-platform-handheld-product.xml index 536c35b671..b7ffd79540 100644 --- a/target/product/sysconfig/preinstalled-packages-platform-handheld-product.xml +++ b/target/product/sysconfig/preinstalled-packages-platform-handheld-product.xml @@ -58,7 +58,6 @@ - diff --git a/target/product/updatable_apex.mk b/target/product/updatable_apex.mk index 8b3bc9a7e5..186927e83b 100644 --- a/target/product/updatable_apex.mk +++ b/target/product/updatable_apex.mk @@ -18,3 +18,5 @@ # and CtsShimPrivPrebuilt since they are packaged inside the APEX. PRODUCT_PACKAGES += com.android.apex.cts.shim.v1_prebuilt PRODUCT_SYSTEM_PROPERTIES += ro.apex.updatable=true + +OVERRIDE_PRODUCT_COMPRESSED_APEX := false diff --git a/tools/otatools_package/Android.bp b/tools/otatools_package/Android.bp index 1028da1f04..dfd6e9c4bf 100644 --- a/tools/otatools_package/Android.bp +++ b/tools/otatools_package/Android.bp @@ -17,22 +17,8 @@ package { default_applicable_licenses: ["Android-Apache-2.0"], } -genrule_defaults { - name: "otatools_package_defaults", - enabled: select(soong_config_variable("otatools", "use_otatools_package"), { - true: true, - default: false, - }), - target: { - windows: { - enabled: false, - }, - }, -} - java_genrule_host { name: "otatools_package_dep_jars", - defaults: ["otatools_package_defaults"], tools: ["soong_zip"], compile_multilib: "first", cmd: "mkdir -p $(genDir)/framework && " + @@ -49,7 +35,6 @@ java_genrule_host { cc_genrule { name: "otatools_package_dep_libs", - defaults: ["otatools_package_defaults"], host_supported: true, device_supported: false, compile_multilib: "first", @@ -99,7 +84,6 @@ cc_genrule { cc_genrule { name: "otatools_package_dep_bins", - defaults: ["otatools_package_defaults"], host_supported: true, device_supported: false, compile_multilib: "first", @@ -209,8 +193,7 @@ cc_genrule { } java_genrule_host { - name: "otatools-package", - defaults: ["otatools_package_defaults"], + name: "otatools_package", tools: ["merge_zips"], compile_multilib: "first", cmd: "$(location merge_zips) $(out) $(in)", @@ -221,11 +204,11 @@ java_genrule_host { ":otatools_package_dep_libs", ":otatools_package_releasetools", ], - out: ["otatools.zip"], + // TODO: Rename as "otatools.zip" when the rest files are ready. + out: ["otatools_temp.zip"], dist: { targets: [ - "droidcore", - "otatools-package", + "otatools-package-temp", ], }, } diff --git a/tools/releasetools/sign_target_files_apks.py b/tools/releasetools/sign_target_files_apks.py index 801b628252..7720a85a1f 100755 --- a/tools/releasetools/sign_target_files_apks.py +++ b/tools/releasetools/sign_target_files_apks.py @@ -1429,6 +1429,8 @@ def BuildKeyMap(misc_info, key_mapping_options): devkeydir + "/platform": d + "/platform", devkeydir + "/networkstack": d + "/networkstack", devkeydir + "/sdk_sandbox": d + "/sdk_sandbox", + devkeydir + "/bluetooth": d + "/bluetooth", + devkeydir + "/gmscompat_lib": d + "/gmscompat_lib", }) else: OPTIONS.key_map[s] = d