From c4baa3aa7240e1b0cb013f853669aa419e55ee1e Mon Sep 17 00:00:00 2001 From: Lokesh Kumar Goel Date: Fri, 9 Feb 2024 01:05:51 +0000 Subject: [PATCH] Allow PLATFORM_BASE_OS override from product config PLATFORM_BASE_OS is used to set value for ro.build.version.base_os which is used to qualify a device build as SMR (Security Maintenance Release) during APFE (Android Partner Approval) to optimize the test span. See ag/26859560 on how we plan to use this variable. Add PRODUCT_BASE_OS that can be used to override PLATFORM_BASE_OS value before making it read_only. Plan is to set the value for PRODUCT_BASE_OS using build flags. This way, it can be easily set per device when making on-demand SMR releases. In future, move it to be set via soong variable during build process once build system side is ready. Test: None Bug: 155105803 Change-Id: I7c4a1f291bb426ad599e1dc937e6ecd3889b5820 --- core/product.mk | 1 + core/product_config.mk | 8 ++++++++ core/version_util.mk | 19 +++++++++++-------- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/core/product.mk b/core/product.mk index ad80ee4599..8d86d92684 100644 --- a/core/product.mk +++ b/core/product.mk @@ -26,6 +26,7 @@ _product_single_value_vars += PRODUCT_NAME _product_single_value_vars += PRODUCT_MODEL _product_single_value_vars += PRODUCT_NAME_FOR_ATTESTATION _product_single_value_vars += PRODUCT_MODEL_FOR_ATTESTATION +_product_single_value_vars += PRODUCT_BASE_OS # Defines the ELF segment alignment for binaries (executables and shared libraries). # The ELF segment alignment has to be a PAGE_SIZE multiple. For example, if diff --git a/core/product_config.mk b/core/product_config.mk index cc2fea96ac..738d4cff58 100644 --- a/core/product_config.mk +++ b/core/product_config.mk @@ -311,6 +311,14 @@ endif TARGET_DEVICE := $(PRODUCT_DEVICE) +# Allow overriding PLATFORM_BASE_OS when PRODUCT_BASE_OS is defined +ifdef PRODUCT_BASE_OS + PLATFORM_BASE_OS := $(PRODUCT_BASE_OS) +else + PLATFORM_BASE_OS := $(PLATFORM_BASE_OS_ENV_INPUT) +endif +.KATI_READONLY := PLATFORM_BASE_OS + # TODO: also keep track of things like "port", "land" in product files. # Figure out which resoure configuration options to use for this diff --git a/core/version_util.mk b/core/version_util.mk index eb568becc4..0e346347bb 100644 --- a/core/version_util.mk +++ b/core/version_util.mk @@ -183,14 +183,17 @@ ifndef PLATFORM_SECURITY_PATCH_TIMESTAMP endif .KATI_READONLY := PLATFORM_SECURITY_PATCH_TIMESTAMP -ifndef PLATFORM_BASE_OS - # Used to indicate the base os applied to the device. - # Can be an arbitrary string, but must be a single word. - # - # If there is no $PLATFORM_BASE_OS set, keep it empty. - PLATFORM_BASE_OS := -endif -.KATI_READONLY := PLATFORM_BASE_OS +# PLATFORM_BASE_OS is used to indicate the base os applied +# to the device. Can be an arbitrary string, but must be a +# single word. +# +# If there is no $PLATFORM_BASE_OS set, keep it empty. +# +# PLATFORM_BASE_OS can either be set via an enviornment +# variable, or set via the PRODUCT_BASE_OS product variable. +PLATFORM_BASE_OS_ENV_INPUT := $(PLATFORM_BASE_OS) +.KATI_READONLY := PLATFORM_BASE_OS_ENV_INPUT +PLATFORM_BASE_OS := ifndef BUILD_ID # Used to signify special builds. E.g., branches and/or releases,