diff --git a/Changes.md b/Changes.md index daebd5231a..9fbc0ffbd0 100644 --- a/Changes.md +++ b/Changes.md @@ -493,6 +493,24 @@ $(call dist-for-goals,foo,bar/baz) will copy `bar/baz` into `$DIST_DIR/baz` when `m foo dist` is run. +#### FILE_NAME_TAG {#FILE_NAME_TAG} + +To embed the `BUILD_NUMBER` (or for local builds, `eng.${USER}`), include +`FILE_NAME_TAG_PLACEHOLDER` in the destination: + +``` make +# you can use dist-for-goals-with-filenametag function +$(call dist-for-goals-with-filenametag,foo,bar.zip) +# or use FILE_NAME_TAG_PLACEHOLDER manually +$(call dist-for-goals,foo,bar.zip:baz-FILE_NAME_TAG_PLACEHOLDER.zip) +``` + +Which will produce `$DIST_DIR/baz-1234567.zip` on build servers which set +`BUILD_NUMBER=1234567`, or `$DIST_DIR/baz-eng.builder.zip` for local builds. + +If you just want to append `BUILD_NUMBER` at the end of basename, use +`dist-for-goals-with-filenametag` instead of `dist-for-goals`. + #### Renames during copy Instead of specifying just a file, a destination name can be specified, diff --git a/core/Makefile b/core/Makefile index f7363a151e..ce7e33dc5a 100644 --- a/core/Makefile +++ b/core/Makefile @@ -711,7 +711,7 @@ name := $(TARGET_PRODUCT) ifeq ($(TARGET_BUILD_TYPE),debug) name := $(name)_debug endif -name := $(name)-apkcerts-$(FILE_NAME_TAG) +name := $(name)-apkcerts intermediates := \ $(call intermediates-dir-for,PACKAGING,apkcerts) APKCERTS_FILE := $(intermediates)/$(name).txt @@ -5710,7 +5710,7 @@ name := $(TARGET_PRODUCT) ifeq ($(TARGET_BUILD_TYPE),debug) name := $(name)_debug endif -name := $(name)-target_files-$(FILE_NAME_TAG) +name := $(name)-target_files intermediates := $(call intermediates-dir-for,PACKAGING,target_files) BUILT_TARGET_FILES_DIR := $(intermediates)/$(name).zip.list @@ -6480,7 +6480,7 @@ $(call declare-container-license-deps,$(BUILT_TARGET_FILES_PACKAGE), $(INSTALLED $(BUILT_KERNEL_CONFIGS_FILE) \ $(BUILT_KERNEL_VERSION_FILE),$(BUILT_TARGET_FILES_PACKAGE):) -$(call dist-for-goals, target-files-package, $(BUILT_TARGET_FILES_PACKAGE)) +$(call dist-for-goals-with-filenametag, target-files-package, $(BUILT_TARGET_FILES_PACKAGE)) # ----------------------------------------------------------------- # NDK Sysroot Package @@ -6515,7 +6515,7 @@ product_name := $(TARGET_PRODUCT) ifeq ($(TARGET_BUILD_TYPE),debug) product_name := $(product_name)_debug endif -name := $(product_name)-ota-$(FILE_NAME_TAG) +name := $(product_name)-ota INTERNAL_OTA_PACKAGE_TARGET := $(PRODUCT_OUT)/$(name).zip INTERNAL_OTA_METADATA := $(PRODUCT_OUT)/ota_metadata @@ -6535,7 +6535,7 @@ $(call declare-container-license-deps,$(INTERNAL_OTA_PACKAGE_TARGET),$(BUILT_TAR otapackage: $(INTERNAL_OTA_PACKAGE_TARGET) ifeq ($(BOARD_BUILD_RETROFIT_DYNAMIC_PARTITIONS_OTA_PACKAGE),true) -name := $(product_name)-ota-retrofit-$(FILE_NAME_TAG) +name := $(product_name)-ota-retrofit INTERNAL_OTA_RETROFIT_DYNAMIC_PARTITIONS_PACKAGE_TARGET := $(PRODUCT_OUT)/$(name).zip $(INTERNAL_OTA_RETROFIT_DYNAMIC_PARTITIONS_PACKAGE_TARGET): KEY_CERT_PAIR := $(DEFAULT_KEY_CERT_PAIR) @@ -6556,7 +6556,7 @@ otapackage otardppackage: $(INTERNAL_OTA_RETROFIT_DYNAMIC_PARTITIONS_PACKAGE_TAR endif # BOARD_BUILD_RETROFIT_DYNAMIC_PARTITIONS_OTA_PACKAGE ifneq ($(BOARD_PARTIAL_OTA_UPDATE_PARTITIONS_LIST),) -name := $(product_name)-partial-ota-$(FILE_NAME_TAG) +name := $(product_name)-partial-ota INTERNAL_OTA_PARTIAL_PACKAGE_TARGET := $(PRODUCT_OUT)/$(name).zip $(INTERNAL_OTA_PARTIAL_PACKAGE_TARGET): KEY_CERT_PAIR := $(DEFAULT_KEY_CERT_PAIR) @@ -6656,9 +6656,9 @@ ifeq ($(TARGET_BUILD_TYPE),debug) endif # The path to the zip file containing binaries with symbols. -SYMBOLS_ZIP := $(PRODUCT_OUT)/$(name)-symbols-$(FILE_NAME_TAG).zip +SYMBOLS_ZIP := $(PRODUCT_OUT)/$(name)-symbols.zip # The path to a file containing mappings from elf IDs to filenames. -SYMBOLS_MAPPING := $(PRODUCT_OUT)/$(name)-symbols-mapping-$(FILE_NAME_TAG).textproto +SYMBOLS_MAPPING := $(PRODUCT_OUT)/$(name)-symbols-mapping.textproto .KATI_READONLY := SYMBOLS_ZIP SYMBOLS_MAPPING # For apps_only build we'll establish the dependency later in build/make/core/main.mk. ifeq (,$(TARGET_BUILD_UNBUNDLED)) @@ -6733,7 +6733,7 @@ name := $(TARGET_PRODUCT) ifeq ($(TARGET_BUILD_TYPE),debug) name := $(name)_debug endif -name := $(name)-apps-$(FILE_NAME_TAG) +name := $(name)-apps APPS_ZIP := $(PRODUCT_OUT)/$(name).zip $(APPS_ZIP): $(FULL_SYSTEMIMAGE_DEPS) @@ -6784,9 +6784,9 @@ endif # EMMA_INSTRUMENT=true # # The path to the zip file containing proguard dictionaries. -PROGUARD_DICT_ZIP := $(PRODUCT_OUT)/$(TARGET_PRODUCT)-proguard-dict-$(FILE_NAME_TAG).zip +PROGUARD_DICT_ZIP := $(PRODUCT_OUT)/$(TARGET_PRODUCT)-proguard-dict.zip # The path to the zip file containing mappings from dictionary hashes to filenames. -PROGUARD_DICT_MAPPING := $(PRODUCT_OUT)/$(TARGET_PRODUCT)-proguard-dict-mapping-$(FILE_NAME_TAG).textproto +PROGUARD_DICT_MAPPING := $(PRODUCT_OUT)/$(TARGET_PRODUCT)-proguard-dict-mapping.textproto .KATI_READONLY := PROGUARD_DICT_ZIP PROGUARD_DICT_MAPPING # For apps_only build we'll establish the dependency later in build/make/core/main.mk. ifeq (,$(TARGET_BUILD_UNBUNDLED)) @@ -6815,7 +6815,7 @@ endif #------------------------------------------------------------------ # A zip of Proguard usage files. # -PROGUARD_USAGE_ZIP := $(PRODUCT_OUT)/$(TARGET_PRODUCT)-proguard-usage-$(FILE_NAME_TAG).zip +PROGUARD_USAGE_ZIP := $(PRODUCT_OUT)/$(TARGET_PRODUCT)-proguard-usage.zip # For apps_only build we'll establish the dependency later in build/make/core/main.mk. ifeq (,$(TARGET_BUILD_UNBUNDLED)) $(PROGUARD_USAGE_ZIP): \ @@ -6992,7 +6992,7 @@ name := $(TARGET_PRODUCT) ifeq ($(TARGET_BUILD_TYPE),debug) name := $(name)_debug endif -name := $(name)-img-$(FILE_NAME_TAG) +name := $(name)-img INTERNAL_UPDATE_PACKAGE_TARGET := $(PRODUCT_OUT)/$(name).zip @@ -7008,7 +7008,7 @@ $(call declare-container-license-deps,$(INTERNAL_UPDATE_PACKAGE_TARGET),$(BUILT_ .PHONY: updatepackage updatepackage: $(INTERNAL_UPDATE_PACKAGE_TARGET) -$(call dist-for-goals,updatepackage,$(INTERNAL_UPDATE_PACKAGE_TARGET)) +$(call dist-for-goals-with-filenametag,updatepackage,$(INTERNAL_UPDATE_PACKAGE_TARGET)) # ----------------------------------------------------------------- @@ -7137,7 +7137,7 @@ INTERNAL_EMULATOR_PACKAGE_FILES += \ $(INSTALLED_SYSTEMIMAGE_TARGET) \ $(INSTALLED_USERDATAIMAGE_TARGET) -name := $(TARGET_PRODUCT)-emulator-$(FILE_NAME_TAG) +name := $(TARGET_PRODUCT)-emulator INTERNAL_EMULATOR_PACKAGE_TARGET := $(PRODUCT_OUT)/$(name).zip @@ -7165,7 +7165,7 @@ sdk_dir := $(HOST_OUT)/sdk/$(TARGET_PRODUCT) ifneq ($(HOST_OS),linux) $(error Building the monolithic SDK is only supported on Linux) endif -sdk_name := android-sdk_$(FILE_NAME_TAG) +sdk_name := android-sdk INTERNAL_SDK_HOST_OS_NAME := linux-$(SDK_HOST_ARCH) sdk_name := $(sdk_name)_$(INTERNAL_SDK_HOST_OS_NAME) diff --git a/core/config.mk b/core/config.mk index e272389514..beb542eea2 100644 --- a/core/config.mk +++ b/core/config.mk @@ -856,6 +856,7 @@ endif .KATI_READONLY := MAINLINE_SEPOLICY_DEV_CERTIFICATES BUILD_NUMBER_FROM_FILE := $$(cat $(SOONG_OUT_DIR)/build_number.txt) +BUILD_HOSTNAME_FROM_FILE := $$(cat $(SOONG_OUT_DIR)/build_hostname.txt) BUILD_DATETIME_FROM_FILE := $$(cat $(BUILD_DATETIME_FILE)) # SEPolicy versions diff --git a/core/host_java_library.mk b/core/host_java_library.mk index 89aa53ce0c..8e063d0ae3 100644 --- a/core/host_java_library.mk +++ b/core/host_java_library.mk @@ -98,8 +98,6 @@ $(full_classes_combined_jar): PRIVATE_DONT_DELETE_JAR_META_INF := $(LOCAL_DONT_D $(full_classes_combined_jar): $(full_classes_compiled_jar) \ $(jar_manifest_file) \ $(full_static_java_libs) | $(MERGE_ZIPS) - $(if $(PRIVATE_JAR_MANIFEST), $(hide) sed -e "s/%BUILD_NUMBER%/$(BUILD_NUMBER_FROM_FILE)/" \ - $(PRIVATE_JAR_MANIFEST) > $(dir $@)/manifest.mf) $(MERGE_ZIPS) -j --ignore-duplicates $(if $(PRIVATE_JAR_MANIFEST),-m $(dir $@)/manifest.mf) \ $(if $(PRIVATE_DONT_DELETE_JAR_META_INF),,-stripDir META-INF -zipToNotStrip $<) \ $@ $< $(PRIVATE_STATIC_JAVA_LIBRARIES) diff --git a/core/java.mk b/core/java.mk index b13ef4d403..6d8f23709e 100644 --- a/core/java.mk +++ b/core/java.mk @@ -296,8 +296,6 @@ $(full_classes_combined_jar): PRIVATE_DONT_DELETE_JAR_META_INF := $(LOCAL_DONT_D $(full_classes_combined_jar): $(full_classes_compiled_jar) \ $(jar_manifest_file) \ $(full_static_java_libs) | $(MERGE_ZIPS) - $(if $(PRIVATE_JAR_MANIFEST), $(hide) sed -e "s/%BUILD_NUMBER%/$(BUILD_NUMBER_FROM_FILE)/" \ - $(PRIVATE_JAR_MANIFEST) > $(dir $@)/manifest.mf) $(MERGE_ZIPS) -j --ignore-duplicates $(if $(PRIVATE_JAR_MANIFEST),-m $(dir $@)/manifest.mf) \ $(if $(PRIVATE_DONT_DELETE_JAR_META_INF),,-stripDir META-INF -zipToNotStrip $<) \ $@ $< $(PRIVATE_STATIC_JAVA_LIBRARIES) diff --git a/core/main.mk b/core/main.mk index a747967347..36bfbfa02e 100644 --- a/core/main.mk +++ b/core/main.mk @@ -40,31 +40,23 @@ include $(BUILD_SYSTEM)/clang/config.mk # Write the build number to a file so it can be read back in # without changing the command line every time. Avoids rebuilds # when using ninja. -$(shell mkdir -p $(SOONG_OUT_DIR) && \ - echo -n $(BUILD_NUMBER) > $(SOONG_OUT_DIR)/build_number.tmp; \ - if ! cmp -s $(SOONG_OUT_DIR)/build_number.tmp $(SOONG_OUT_DIR)/build_number.txt; then \ - mv $(SOONG_OUT_DIR)/build_number.tmp $(SOONG_OUT_DIR)/build_number.txt; \ - else \ - rm $(SOONG_OUT_DIR)/build_number.tmp; \ - fi) BUILD_NUMBER_FILE := $(SOONG_OUT_DIR)/build_number.txt -.KATI_READONLY := BUILD_NUMBER_FILE $(KATI_obsolete_var BUILD_NUMBER,See https://android.googlesource.com/platform/build/+/master/Changes.md#BUILD_NUMBER) +BUILD_HOSTNAME_FILE := $(SOONG_OUT_DIR)/build_hostname.txt +$(KATI_obsolete_var BUILD_HOSTNAME,Use BUILD_HOSTNAME_FROM_FILE instead) +$(KATI_obsolete_var FILE_NAME_TAG,https://android.googlesource.com/platform/build/+/master/Changes.md#FILE_NAME_TAG) + $(BUILD_NUMBER_FILE): - touch $@ + touch -a $@ +$(BUILD_HOSTNAME_FILE): + touch -a $@ + +.KATI_RESTAT: $(BUILD_NUMBER_FILE) +.KATI_RESTAT: $(BUILD_HOSTNAME_FILE) DATE_FROM_FILE := date -d @$(BUILD_DATETIME_FROM_FILE) .KATI_READONLY := DATE_FROM_FILE -# Pick a reasonable string to use to identify files. -ifeq ($(strip $(HAS_BUILD_NUMBER)),false) - # BUILD_NUMBER has a timestamp in it, which means that - # it will change every time. Pick a stable value. - FILE_NAME_TAG := eng.$(BUILD_USERNAME) -else - FILE_NAME_TAG := $(file <$(BUILD_NUMBER_FILE)) -endif -.KATI_READONLY := FILE_NAME_TAG # Make an empty directory, which can be used to make empty jars EMPTY_DIRECTORY := $(OUT_DIR)/empty @@ -1751,15 +1743,15 @@ else ifneq ($(TARGET_BUILD_APPS),) endif $(PROGUARD_DICT_ZIP) : $(apps_only_installed_files) - $(call dist-for-goals,apps_only, $(PROGUARD_DICT_ZIP) $(PROGUARD_DICT_MAPPING)) + $(call dist-for-goals-with-filenametag,apps_only, $(PROGUARD_DICT_ZIP) $(PROGUARD_DICT_ZIP) $(PROGUARD_DICT_MAPPING)) $(call declare-container-license-deps,$(PROGUARD_DICT_ZIP),$(apps_only_installed_files),$(PRODUCT_OUT)/:/) $(PROGUARD_USAGE_ZIP) : $(apps_only_installed_files) - $(call dist-for-goals,apps_only, $(PROGUARD_USAGE_ZIP)) + $(call dist-for-goals-with-filenametag,apps_only, $(PROGUARD_USAGE_ZIP)) $(call declare-container-license-deps,$(PROGUARD_USAGE_ZIP),$(apps_only_installed_files),$(PRODUCT_OUT)/:/) $(SYMBOLS_ZIP) : $(apps_only_installed_files) - $(call dist-for-goals,apps_only, $(SYMBOLS_ZIP) $(SYMBOLS_MAPPING)) + $(call dist-for-goals-with-filenametag,apps_only, $(SYMBOLS_ZIP) $(SYMBOLS_MAPPING)) $(call declare-container-license-deps,$(SYMBOLS_ZIP),$(apps_only_installed_files),$(PRODUCT_OUT)/:/) $(COVERAGE_ZIP) : $(apps_only_installed_files) @@ -1805,10 +1797,9 @@ else ifeq ($(TARGET_BUILD_UNBUNDLED),$(TARGET_BUILD_UNBUNDLED_IMAGE)) # avoid disting targets that would cause building framework java sources, # which we want to avoid in an unbundled build. - $(call dist-for-goals, droidcore-unbundled, \ + $(call dist-for-goals-with-filenametag, droidcore-unbundled, \ $(INTERNAL_UPDATE_PACKAGE_TARGET) \ $(INTERNAL_OTA_PACKAGE_TARGET) \ - $(INTERNAL_OTA_METADATA) \ $(INTERNAL_OTA_PARTIAL_PACKAGE_TARGET) \ $(BUILT_RAMDISK_16K_TARGET) \ $(BUILT_KERNEL_16K_TARGET) \ @@ -1818,6 +1809,11 @@ else ifeq ($(TARGET_BUILD_UNBUNDLED),$(TARGET_BUILD_UNBUNDLED_IMAGE)) $(PROGUARD_DICT_ZIP) \ $(PROGUARD_DICT_MAPPING) \ $(PROGUARD_USAGE_ZIP) \ + $(BUILT_TARGET_FILES_PACKAGE) \ + ) + + $(call dist-for-goals, droidcore-unbundled, \ + $(INTERNAL_OTA_METADATA) \ $(COVERAGE_ZIP) \ $(INSTALLED_FILES_FILE) \ $(INSTALLED_FILES_JSON) \ @@ -1845,7 +1841,6 @@ else ifeq ($(TARGET_BUILD_UNBUNDLED),$(TARGET_BUILD_UNBUNDLED_IMAGE)) $(INSTALLED_ODM_BUILD_PROP_TARGET):build.prop-odm \ $(INSTALLED_SYSTEM_EXT_BUILD_PROP_TARGET):build.prop-system_ext \ $(INSTALLED_RAMDISK_BUILD_PROP_TARGET):build.prop-ramdisk \ - $(BUILT_TARGET_FILES_PACKAGE) \ $(INSTALLED_ANDROID_INFO_TXT_TARGET) \ $(INSTALLED_MISC_INFO_TARGET) \ $(INSTALLED_RAMDISK_TARGET) \ @@ -1857,7 +1852,7 @@ else ifeq ($(TARGET_BUILD_UNBUNDLED),$(TARGET_BUILD_UNBUNDLED_IMAGE)) $(call dist-for-goals, droidcore-unbundled, $(f))) ifneq ($(ANDROID_BUILD_EMBEDDED),true) - $(call dist-for-goals, droidcore, \ + $(call dist-for-goals-with-filenametag, droidcore, \ $(APPS_ZIP) \ $(INTERNAL_EMULATOR_PACKAGE_TARGET) \ ) @@ -1957,10 +1952,8 @@ docs: $(ALL_DOCS) ifeq ($(HOST_OS),linux) ALL_SDK_TARGETS := $(INTERNAL_SDK_TARGET) sdk: $(ALL_SDK_TARGETS) -$(call dist-for-goals,sdk, \ - $(ALL_SDK_TARGETS) \ - $(INSTALLED_BUILD_PROP_TARGET) \ -) +$(call dist-for-goals-with-filenametag,sdk,$(ALL_SDK_TARGETS)) +$(call dist-for-goals,sdk,$(INSTALLED_BUILD_PROP_TARGET)) endif # umbrella targets to assit engineers in verifying builds diff --git a/core/sysprop.mk b/core/sysprop.mk index bd6f3d9fdf..cf4b1f64b4 100644 --- a/core/sysprop.mk +++ b/core/sysprop.mk @@ -174,7 +174,7 @@ ifeq (,$(strip $(BUILD_FINGERPRINT))) ifeq ($(strip $(HAS_BUILD_NUMBER)),false) BF_BUILD_NUMBER := $(BUILD_USERNAME)$$($(DATE_FROM_FILE) +%m%d%H%M) else - BF_BUILD_NUMBER := $(file <$(BUILD_NUMBER_FILE)) + BF_BUILD_NUMBER := $$(cat $(SOONG_OUT_DIR)/build_hostname.txt) endif BUILD_FINGERPRINT := $(PRODUCT_BRAND)/$(TARGET_PRODUCT)/$(TARGET_DEVICE):$(PLATFORM_VERSION)/$(BUILD_ID)/$(BF_BUILD_NUMBER):$(TARGET_BUILD_VARIANT)/$(BUILD_VERSION_TAGS) endif @@ -196,6 +196,9 @@ ifeq (,$(strip $(BUILD_THUMBPRINT))) endif BUILD_THUMBPRINT_FILE := $(PRODUCT_OUT)/build_thumbprint.txt +ifeq ($(strip $(HAS_BUILD_NUMBER)),true) +$(BUILD_THUMBPRINT_FILE): $(BUILD_NUMBER_FILE) +endif ifneq (,$(shell mkdir -p $(PRODUCT_OUT) && echo $(BUILD_THUMBPRINT) >$(BUILD_THUMBPRINT_FILE) && grep " " $(BUILD_THUMBPRINT_FILE))) $(error BUILD_THUMBPRINT cannot contain spaces: "$(file <$(BUILD_THUMBPRINT_FILE))") endif @@ -260,7 +263,11 @@ $(strip $(subst _,-, $(firstword $(1)))) endef gen_from_buildinfo_sh := $(call intermediates-dir-for,PACKAGING,system_build_prop)/buildinfo.prop -$(gen_from_buildinfo_sh): $(INTERNAL_BUILD_ID_MAKEFILE) $(API_FINGERPRINT) | $(BUILD_DATETIME_FILE) $(BUILD_NUMBER_FILE) + +ifeq ($(strip $(HAS_BUILD_NUMBER)),true) +$(gen_from_buildinfo_sh): $(BUILD_NUMBER_FILE) +endif +$(gen_from_buildinfo_sh): $(INTERNAL_BUILD_ID_MAKEFILE) $(API_FINGERPRINT) $(BUILD_HOSTNAME_FILE) | $(BUILD_DATETIME_FILE) $(hide) TARGET_BUILD_TYPE="$(TARGET_BUILD_VARIANT)" \ TARGET_BUILD_FLAVOR="$(TARGET_BUILD_FLAVOR)" \ TARGET_DEVICE="$(TARGET_DEVICE)" \ @@ -271,7 +278,7 @@ $(gen_from_buildinfo_sh): $(INTERNAL_BUILD_ID_MAKEFILE) $(API_FINGERPRINT) | $(B BUILD_DISPLAY_ID="$(BUILD_DISPLAY_ID)" \ DATE="$(DATE_FROM_FILE)" \ BUILD_USERNAME="$(BUILD_USERNAME)" \ - BUILD_HOSTNAME="$(BUILD_HOSTNAME)" \ + BUILD_HOSTNAME="$(BUILD_HOSTNAME_FROM_FILE)" \ BUILD_NUMBER="$(BUILD_NUMBER_FROM_FILE)" \ BOARD_USE_VBMETA_DIGTEST_IN_FINGERPRINT="$(BOARD_USE_VBMETA_DIGTEST_IN_FINGERPRINT)" \ PLATFORM_VERSION="$(PLATFORM_VERSION)" \ diff --git a/core/tasks/sdk-addon.mk b/core/tasks/sdk-addon.mk index 5097f1266f..7acac72f1d 100644 --- a/core/tasks/sdk-addon.mk +++ b/core/tasks/sdk-addon.mk @@ -19,12 +19,13 @@ addon_name := $(PRODUCT_SDK_ADDON_NAME) ifneq ($(addon_name),) -addon_dir_leaf := $(addon_name)-$(FILE_NAME_TAG)-$(INTERNAL_SDK_HOST_OS_NAME) -addon_dir_img := $(addon_dir_leaf)-img -intermediates := $(HOST_OUT_INTERMEDIATES)/SDK_ADDON/$(addon_name)_intermediates -full_target := $(HOST_OUT_SDK_ADDON)/$(addon_dir_leaf).zip -full_target_img := $(HOST_OUT_SDK_ADDON)/$(addon_dir_img).zip -staging := $(intermediates) +addon_dir_leaf := $(addon_name)-$(INTERNAL_SDK_HOST_OS_NAME) +addon_dir_img := $(addon_dir_leaf)-img +intermediates := $(HOST_OUT_INTERMEDIATES)/SDK_ADDON/$(addon_name)_intermediates +full_target := $(HOST_OUT_SDK_ADDON)/$(addon_dir_leaf).zip +full_target_dist_name := $(addon_name)-FILE_NAME_TAG_PLACEHOLDER-$(INTERNAL_SDK_HOST_OS_NAME) +full_target_img := $(HOST_OUT_SDK_ADDON)/$(addon_dir_img).zip +staging := $(intermediates) sdk_addon_deps := files_to_copy := @@ -140,7 +141,7 @@ ADDON_SDK_IMG_ZIP := $(full_target_img) else # When not building an sdk_repo, just dist the addon zip file # as-is. -$(call dist-for-goals, sdk_addon, $(full_target)) +$(call dist-for-goals, sdk_addon, $(full_target):$(full_target_dist_name)) endif else # addon_name diff --git a/core/tasks/tools/build_custom_image.mk b/core/tasks/tools/build_custom_image.mk index 2626120eb0..ba97e8a626 100644 --- a/core/tasks/tools/build_custom_image.mk +++ b/core/tasks/tools/build_custom_image.mk @@ -105,6 +105,9 @@ ifeq (true,$(filter true, $(CUSTOM_IMAGE_AVB_HASH_ENABLE) $(CUSTOM_IMAGE_AVB_HAS else ifneq (,$(filter true, $(CUSTOM_IMAGE_AVB_HASH_ENABLE) $(CUSTOM_IMAGE_AVB_HASHTREE_ENABLE))) $(error Cannot set both CUSTOM_IMAGE_AVB_HASH_ENABLE and CUSTOM_IMAGE_AVB_HASHTREE_ENABLE to true) endif +ifeq ($(strip $(HAS_BUILD_NUMBER)),true) +$(my_built_custom_image): $(BUILD_NUMBER_FILE) +endif $(my_built_custom_image): $(INTERNAL_USERIMAGES_DEPS) $(my_built_modules) $(my_image_copy_files) $(my_custom_image_modules_dep) \ $(CUSTOM_IMAGE_DICT_FILE) @echo "Build image $@" diff --git a/core/tasks/tools/compatibility.mk b/core/tasks/tools/compatibility.mk index 8ae2a9ae5a..dd2305e7b9 100644 --- a/core/tasks/tools/compatibility.mk +++ b/core/tasks/tools/compatibility.mk @@ -118,6 +118,9 @@ $(compatibility_zip): PRIVATE_RESOURCES := $(compatibility_zip_resources) $(compatibility_zip): PRIVATE_JDK := $(test_suite_jdk) $(compatibility_zip): PRIVATE_tests_list := $(out_dir)-tests_list $(compatibility_zip): PRIVATE_tests_list_zip := $(compatibility_tests_list_zip) +ifeq ($(strip $(HAS_BUILD_NUMBER)),true) +$(compatibility_zip): $(BUILD_NUMBER_FILE) +endif $(compatibility_zip): $(compatibility_zip_deps) | $(ADB) $(ACP) # Make dir structure mkdir -p $(PRIVATE_OUT_DIR)/tools $(PRIVATE_OUT_DIR)/testcases diff --git a/core/tasks/with-license.mk b/core/tasks/with-license.mk index d41e77a1ce..5ca974a1a0 100644 --- a/core/tasks/with-license.mk +++ b/core/tasks/with-license.mk @@ -20,7 +20,8 @@ ifeq ($(TARGET_BUILD_TYPE),debug) name := $(name)_debug endif -name := $(name)-flashable-$(FILE_NAME_TAG)-with-license +dist_name := $(name)-flashable-FILE_NAME_TAG_PLACEHOLDER-with-license +name := $(name)-flashable-with-license with_license_intermediates := \ $(call intermediates-dir-for,PACKAGING,with_license) @@ -42,6 +43,7 @@ $(call declare-1p-container,$(license_image_input_zip),build) $(call declare-container-deps,$(license_image_input_zip),$(BUILT_TARGET_FILES_PACKAGE)) with_license_zip := $(PRODUCT_OUT)/$(name).sh +dist_name := $(dist_name).sh $(with_license_zip): PRIVATE_NAME := $(name) $(with_license_zip): PRIVATE_INPUT_ZIP := $(license_image_input_zip) $(with_license_zip): PRIVATE_VENDOR_BLOBS_LICENSE := $(VENDOR_BLOBS_LICENSE) @@ -51,7 +53,7 @@ $(with_license_zip): $(HOST_OUT_EXECUTABLES)/generate-self-extracting-archive $(HOST_OUT_EXECUTABLES)/generate-self-extracting-archive $@ \ $(PRIVATE_INPUT_ZIP) $(PRIVATE_NAME) $(PRIVATE_VENDOR_BLOBS_LICENSE) with-license : $(with_license_zip) -$(call dist-for-goals, with-license, $(with_license_zip)) +$(call dist-for-goals, with-license, $(with_license_zip):$(dist_name)) $(call declare-1p-container,$(with_license_zip),) $(call declare-container-license-deps,$(with_license_zip),$(license_image_input_zip),$(with_license_zip):) diff --git a/core/version_util.mk b/core/version_util.mk index 47883d8a89..d4ce113ec5 100644 --- a/core/version_util.mk +++ b/core/version_util.mk @@ -246,21 +246,10 @@ DATE := date -d @$(BUILD_DATETIME) # to soong_ui. $(KATI_obsolete_var BUILD_DATETIME,Use BUILD_DATETIME_FROM_FILE) -HAS_BUILD_NUMBER := true -ifndef BUILD_NUMBER - # BUILD_NUMBER should be set to the source control value that - # represents the current state of the source code. E.g., a - # perforce changelist number or a git hash. Can be an arbitrary string - # (to allow for source control that uses something other than numbers), - # but must be a single word and a valid file name. - # - # If no BUILD_NUMBER is set, create a useful "I am an engineering build - # from this date/time" value. Make it start with a non-digit so that - # anyone trying to parse it as an integer will probably get "0". - BUILD_NUMBER := eng.$(shell echo $${BUILD_USERNAME:0:6}).$(shell $(DATE) +%Y%m%d.%H%M%S) +ifndef HAS_BUILD_NUMBER HAS_BUILD_NUMBER := false endif -.KATI_READONLY := BUILD_NUMBER HAS_BUILD_NUMBER +.KATI_READONLY := HAS_BUILD_NUMBER ifndef PLATFORM_MIN_SUPPORTED_TARGET_SDK_VERSION # Used to set minimum supported target sdk version. Apps targeting sdk diff --git a/packaging/distdir.mk b/packaging/distdir.mk index 264a8b098c..c9508af323 100644 --- a/packaging/distdir.mk +++ b/packaging/distdir.mk @@ -18,10 +18,12 @@ DIST_GOAL_OUTPUT_PAIRS := DIST_SRC_DST_PAIRS := include $(KATI_PACKAGE_MK_DIR)/dist.mk +FILE_NAME_TAG := $(file <$(OUT_DIR)/file_name_tag.txt) +.KATI_READONLY := FILE_NAME_TAG $(foreach pair,$(DIST_GOAL_OUTPUT_PAIRS), \ $(eval goal := $(call word-colon,1,$(pair))) \ - $(eval output := $(call word-colon,2,$(pair))) \ + $(eval output := $(subst FILE_NAME_TAG_PLACEHOLDER,$(FILE_NAME_TAG),$(call word-colon,2,$(pair)))) \ $(eval .PHONY: _dist_$$(goal)) \ $(if $(call streq,$(DIST),true),\ $(eval _dist_$$(goal): $$(DIST_DIR)/$$(output)), \ @@ -37,7 +39,7 @@ endef ifeq ($(DIST),true) $(foreach pair,$(DIST_SRC_DST_PAIRS), \ $(eval src := $(call word-colon,1,$(pair))) \ - $(eval dst := $(DIST_DIR)/$(call word-colon,2,$(pair))) \ + $(eval dst := $(subst FILE_NAME_TAG_PLACEHOLDER,$(FILE_NAME_TAG),$(DIST_DIR)/$(call word-colon,2,$(pair)))) \ $(eval $(call copy-one-dist-file,$(src),$(dst)))) endif