Merge "DO NOT MERGE - Merge PPRL.190305.001 into master"
diff --git a/CleanSpec.mk b/CleanSpec.mk
index 51139ed..21034ad 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -603,13 +603,6 @@
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib*)
-# Clean up old testcase files
-$(call add-clean-step, rm -rf $(TARGET_OUT_TESTCASES)/*)
-$(call add-clean-step, rm -rf $(HOST_OUT_TESTCASES)/*)
-$(call add-clean-step, rm -rf $(HOST_CROSS_OUT_TESTCASES)/*)
-$(call add-clean-step, rm -rf $(TARGET_OUT_DATA)/*)
-$(call add-clean-step, rm -rf $(HOST_OUT)/vts/*)
-$(call add-clean-step, rm -rf $(HOST_OUT)/framework/vts-tradefed.jar)
# ************************************************
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
# ************************************************
diff --git a/core/base_rules.mk b/core/base_rules.mk
index b2bbe46..2fbf524 100644
--- a/core/base_rules.mk
+++ b/core/base_rules.mk
@@ -242,33 +242,6 @@
partition_tag := $(if $(call should-install-to-system,$(my_module_tags)),,_DATA)
endif
endif
-# For test modules that lack a suite tag, set null-suite as the default.
-# We only support adding a default suite to native tests, native benchmarks, and instrumentation tests.
-# This is because they are the only tests we currently auto-generate test configs for.
-ifndef LOCAL_COMPATIBILITY_SUITE
- ifneq ($(filter NATIVE_TESTS NATIVE_BENCHMARK, $(LOCAL_MODULE_CLASS)),)
- LOCAL_COMPATIBILITY_SUITE := null-suite
- endif
- ifneq ($(filter APPS, $(LOCAL_MODULE_CLASS)),)
- ifneq ($(filter $(my_module_tags),tests),)
- LOCAL_COMPATIBILITY_SUITE := null-suite
- endif
- endif
-endif
-
-use_testcase_folder :=
-ifdef ENABLE_DEFAULT_TEST_LOCATION
- ifeq ($(my_module_path),)
- ifneq ($(LOCAL_MODULE),$(filter $(LOCAL_MODULE),$(DEFAULT_DATA_OUT_MODULES)))
- ifdef LOCAL_COMPATIBILITY_SUITE
- ifneq (true, $(LOCAL_IS_HOST_MODULE))
- use_testcase_folder := true
- endif
- endif
- endif
- endif
-endif
-
ifeq ($(my_module_path),)
install_path_var := $(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)OUT$(partition_tag)_$(LOCAL_MODULE_CLASS)
ifeq (true,$(LOCAL_PRIVILEGED_MODULE))
@@ -276,16 +249,6 @@
endif
my_module_path := $($(install_path_var))
-
- # If use_testcase_folder be set, and LOCAL_MODULE_PATH not set,
- # overwrite the default path under testcase.
- ifeq ($(use_testcase_folder),true)
- arch_dir := $($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)
- testcase_folder := $($(my_prefix)OUT_TESTCASES)/$(LOCAL_MODULE)/$(arch_dir)
- my_module_path := $(testcase_folder)
- arch_dir :=
- endif
-
ifeq ($(strip $(my_module_path)),)
$(error $(LOCAL_PATH): unhandled install path "$(install_path_var) for $(LOCAL_MODULE)")
endif
@@ -361,9 +324,7 @@
# Neither do Runtime Resource Overlay apks, which contain just the overlaid resources.
else ifeq ($(LOCAL_IS_RUNTIME_RESOURCE_OVERLAY),true)
else
- ifneq ($(use_testcase_folder),true)
- my_module_path := $(my_module_path)/$(LOCAL_MODULE)
- endif
+ my_module_path := $(my_module_path)/$(LOCAL_MODULE)
endif
endif
LOCAL_INSTALLED_MODULE := $(my_module_path)/$(my_installed_module_stem)
@@ -468,23 +429,12 @@
my_init_rc_installed :=
my_init_rc_pairs :=
my_installed_symlinks :=
-my_default_test_module :=
-ifeq ($(use_testcase_folder),true)
-arch_dir := $($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)
-my_default_test_module := $($(my_prefix)OUT_TESTCASES)/$(LOCAL_MODULE)/$(arch_dir)/$(my_installed_module_stem)
-arch_dir :=
-endif
-
ifneq (true,$(LOCAL_UNINSTALLABLE_MODULE))
-ifneq ($(LOCAL_INSTALLED_MODULE),$(my_default_test_module))
-# Install into the testcase folder
-$(LOCAL_INSTALLED_MODULE) : $(my_default_test_module)
$(LOCAL_INSTALLED_MODULE): PRIVATE_POST_INSTALL_CMD := $(LOCAL_POST_INSTALL_CMD)
$(LOCAL_INSTALLED_MODULE): $(LOCAL_BUILT_MODULE)
@echo "Install: $@"
$(copy-file-to-new-target)
$(PRIVATE_POST_INSTALL_CMD)
-endif
ifndef LOCAL_IS_HOST_MODULE
# Rule to install the module's companion init.rc.
@@ -594,6 +544,20 @@
endif
endif
+# For test modules that lack a suite tag, set null-suite as the default.
+# We only support adding a default suite to native tests, native benchmarks, and instrumentation tests.
+# This is because they are the only tests we currently auto-generate test configs for.
+ifndef LOCAL_COMPATIBILITY_SUITE
+ifneq ($(filter NATIVE_TESTS NATIVE_BENCHMARK, $(LOCAL_MODULE_CLASS)),)
+LOCAL_COMPATIBILITY_SUITE := null-suite
+endif
+ifneq ($(filter APPS, $(LOCAL_MODULE_CLASS)),)
+ifneq ($(filter $(my_module_tags),tests),)
+LOCAL_COMPATIBILITY_SUITE := null-suite
+endif
+endif
+endif
+
###########################################################
## Compatibility suite files.
###########################################################
@@ -611,15 +575,9 @@
ifdef LOCAL_MULTILIB
multi_arch := true
endif
-
ifdef multi_arch
-arch_dir := /$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)
-else
-ifeq ($(use_testcase_folder),true)
arch_dir := /$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)
endif
-endif
-
multi_arch :=
# The module itself.
@@ -713,17 +671,6 @@
endif
-ifeq ($(use_testcase_folder),true)
-ifneq ($(my_test_data_file_pairs),)
-$(foreach pair, $(my_test_data_file_pairs), \
- $(eval parts := $(subst :,$(space),$(pair))) \
- $(eval src_path := $(word 1,$(parts))) \
- $(eval file := $(word 2,$(parts))) \
- $(foreach suite, $(LOCAL_COMPATIBILITY_SUITE), \
- $(eval my_compat_dist_$(suite) += $(foreach dir, $(call compatibility_suite_dirs,$(suite),$(arch_dir)), \
- $(call filter-copy-pair,$(src_path),$(call append-path,$(dir),$(file)),$(my_installed_test_data))))))
-endif
-else
ifneq ($(my_test_data_file_pairs),)
$(foreach pair, $(my_test_data_file_pairs), \
$(eval parts := $(subst :,$(space),$(pair))) \
@@ -733,9 +680,6 @@
$(eval my_compat_dist_$(suite) += $(foreach dir, $(call compatibility_suite_dirs,$(suite),$(arch_dir)), \
$(src_path):$(call append-path,$(dir),$(file))))))
endif
-endif
-
-
arch_dir :=
is_native :=
diff --git a/core/config.mk b/core/config.mk
index 0bc460e..242558e 100644
--- a/core/config.mk
+++ b/core/config.mk
@@ -1174,12 +1174,4 @@
include $(BUILD_SYSTEM)/soong_config.mk
endif
-# If ENABLE_DEFAULT_TEST_LOCATION is true, move default install path from
-# $(my_prefix)OUT_DATA to $(my_prefix)OUT_TESTCASES
-ENABLE_DEFAULT_TEST_LOCATION := true
--include external/linux-kselftest/android/kselftest_test_list.mk
--include external/ltp/android/ltp_package_list.mk
-DEFAULT_DATA_OUT_MODULES := ltp $(ltp_packages) $(kselftest_modules)
-.KATI_READONLY := ENABLE_DEFAULT_TEST_LOCATION DEFAULT_DATA_OUT_MODULES
-
include $(BUILD_SYSTEM)/dumpvar.mk
diff --git a/core/definitions.mk b/core/definitions.mk
index e880fa5..c46a873 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -2478,25 +2478,6 @@
$$(align-package)
endef
-# Create copy pair for compatibility suite
-# Filter out $(LOCAL_INSTALLED_MODULE) to prevent overriding target
-# $(1): source path
-# $(2): destination path
-# The format of copy pair is src:dst
-define compat-copy-pair
-$(if $(filter-out $(2), $(LOCAL_INSTALLED_MODULE)), $(1):$(2))
-endef
-
-# Create copy pair for $(1) $(2)
-# If $(2) is substring of $(3) do nothing.
-# $(1): source path
-# $(2): destination path
-# $(3): filter-out target
-# The format of copy pair is src:dst
-define filter-copy-pair
-$(if $(findstring $(2), $(3)),,$(1):$(2))
-endef
-
# Copies many files.
# $(1): The files to copy. Each entry is a ':' separated src:dst pair
# $(2): An optional directory to prepend to the destination
diff --git a/core/envsetup.mk b/core/envsetup.mk
index 1704daf..506ec4d 100644
--- a/core/envsetup.mk
+++ b/core/envsetup.mk
@@ -523,11 +523,6 @@
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS_PRIVILEGED \
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_TESTCASES
-MODULE_CLASS_APPS := app
-MODULE_CLASS_EXECUTABLES := bin
-MODULE_CLASS_JAVA_LIBRARIES := framework
-MODULE_CLASS_NATIVE_TESTS := nativetest
-MODULE_CLASS_METRIC_TESTS := benchmarktest
TARGET_OUT_DATA := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DATA)
TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_EXECUTABLES)
TARGET_OUT_DATA_SHARED_LIBRARIES := $(TARGET_OUT_SHARED_LIBRARIES)
@@ -547,7 +542,6 @@
TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest$(TARGET_VENDOR_TEST_SUFFIX)
TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest$(TARGET_VENDOR_TEST_SUFFIX)
endif
-MODULE_CLASS_FAKE := fake_packages
TARGET_OUT_DATA_FAKE := $(TARGET_OUT_DATA)/fake_packages
.KATI_READONLY := \
TARGET_OUT_DATA \
@@ -562,13 +556,7 @@
TARGET_OUT_DATA_METRIC_TESTS \
TARGET_OUT_VENDOR_NATIVE_TESTS \
TARGET_OUT_VENDOR_METRIC_TESTS \
- TARGET_OUT_DATA_FAKE \
- MODULE_CLASS_APPS \
- MODULE_CLASS_EXECUTABLES \
- MODULE_CLASS_JAVA_LIBRARIES \
- MODULE_CLASS_NATIVE_TESTS \
- MODULE_CLASS_METRIC_TESTS \
- MODULE_CLASS_FAKE
+ TARGET_OUT_DATA_FAKE
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_DATA_EXECUTABLES)
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_SHARED_LIBRARIES := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES)
diff --git a/core/native_benchmark.mk b/core/native_benchmark.mk
index 4750649..e73bcad 100644
--- a/core/native_benchmark.mk
+++ b/core/native_benchmark.mk
@@ -6,10 +6,8 @@
LOCAL_STATIC_LIBRARIES += libgoogle-benchmark
-ifndef ENABLE_DEFAULT_TEST_LOCATION
LOCAL_MODULE_PATH_64 := $(TARGET_OUT_DATA_METRIC_TESTS)/$(LOCAL_MODULE)
LOCAL_MODULE_PATH_32 := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_METRIC_TESTS)/$(LOCAL_MODULE)
-endif
ifndef LOCAL_MULTILIB
ifndef LOCAL_32_BIT_ONLY
diff --git a/core/package_internal.mk b/core/package_internal.mk
index 3be4635..9043710 100644
--- a/core/package_internal.mk
+++ b/core/package_internal.mk
@@ -768,17 +768,10 @@
ifdef LOCAL_COMPATIBILITY_SUITE
-ifndef ENABLE_DEFAULT_TEST_LOCATION
$(foreach suite, $(LOCAL_COMPATIBILITY_SUITE), \
$(eval my_compat_dist_$(suite) := $(foreach dir, $(call compatibility_suite_dirs,$(suite)), \
$(foreach s,$(my_split_suffixes),\
$(intermediates)/package_$(s).apk:$(dir)/$(LOCAL_MODULE)_$(s).apk))))
-else
-$(foreach suite, $(LOCAL_COMPATIBILITY_SUITE), \
- $(eval my_compat_dist_$(suite) := $(foreach dir, $(call compatibility_suite_dirs,$(suite)), \
- $(foreach s,$(my_split_suffixes),\
- $(call compat-copy-pair,$(intermediates)/package_$(s).apk,$(dir)/$(LOCAL_MODULE)_$(s).apk)))))
-endif
$(call create-suite-dependencies)
diff --git a/core/target_test_internal.mk b/core/target_test_internal.mk
index 1ed1195..b5c3a7c 100644
--- a/core/target_test_internal.mk
+++ b/core/target_test_internal.mk
@@ -29,15 +29,6 @@
$(error $(LOCAL_PATH): Do not set LOCAL_MODULE_PATH_64 when building test $(LOCAL_MODULE))
endif
-use_testcase_folder := false
-ifdef ENABLE_DEFAULT_TEST_LOCATION
- ifneq ($(LOCAL_MODULE),$(filter $(LOCAL_MODULE),$(DEFAULT_DATA_OUT_MODULES)))
- use_testcase_folder := true
- endif
-endif
-
-ifneq ($(use_testcase_folder),true)
ifndef LOCAL_MODULE_RELATIVE_PATH
LOCAL_MODULE_RELATIVE_PATH := $(LOCAL_MODULE)
endif
-endif
diff --git a/core/tasks/tools/package-modules.mk b/core/tasks/tools/package-modules.mk
index 82b4c6a..629a9b2 100644
--- a/core/tasks/tools/package-modules.mk
+++ b/core/tasks/tools/package-modules.mk
@@ -40,8 +40,6 @@
$(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).PICKUP_FILES)))\
$(eval _built_files := $(strip $(ALL_MODULES.$(m).BUILT_INSTALLED)\
$(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).BUILT_INSTALLED)))\
- $(eval _module_class_folder := $($(strip MODULE_CLASS_$(word 1, $(strip $(ALL_MODULES.$(m).CLASS)\
- $(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).CLASS))))))\
$(if $(_pickup_files)$(_built_files),,\
$(call my_missing_files,$(m)))\
$(eval my_pickup_files += $(_pickup_files))\
@@ -51,15 +49,9 @@
$(if $(filter $(TARGET_OUT_ROOT)/%,$(ins)),\
$(eval bui := $(word 1,$(bui_ins)))\
$(eval my_built_modules += $(bui))\
- $(if $(filter $(_module_class_folder), nativetest benchmarktest),\
- $(eval module_class_folder_stem := $(_module_class_folder)$(findstring 64, $(patsubst $(PRODUCT_OUT)/%,%,$(ins)))),\
- $(eval module_class_folder_stem := $(_module_class_folder)))\
$(eval my_copy_dest := $(patsubst data/%,DATA/%,\
- $(patsubst testcases/%,DATA/$(module_class_folder_stem)/%,\
- $(patsubst testcases/$(m)/$(TARGET_ARCH)/%,DATA/$(module_class_folder_stem)/$(m)/%,\
- $(patsubst testcases/$(m)/$(TARGET_2ND_ARCH)/%,DATA/$(module_class_folder_stem)/$(m)/%,\
- $(patsubst system/%,DATA/%,\
- $(patsubst $(PRODUCT_OUT)/%,%,$(ins))))))))\
+ $(patsubst system/%,DATA/%,\
+ $(patsubst $(PRODUCT_OUT)/%,%,$(ins)))))\
$(eval my_copy_pairs += $(bui):$(my_staging_dir)/$(my_copy_dest)))\
))
diff --git a/target/product/go_defaults_common.mk b/target/product/go_defaults_common.mk
index e35bf30..7042f6d 100644
--- a/target/product/go_defaults_common.mk
+++ b/target/product/go_defaults_common.mk
@@ -61,9 +61,8 @@
# Do not generate libartd.
PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD := false
-# Do not spin up a separate process for the network stack on go devices, use an in-process lib.
-PRODUCT_PACKAGES += NetworkStackLib
-PRODUCT_SYSTEM_SERVER_JARS += NetworkStackLib
+# Do not spin up a separate process for the network stack on go devices, use an in-process APK.
+PRODUCT_PACKAGES += InProcessNetworkStack
# Strip the local variable table and the local variable type table to reduce
# the size of the system image. This has no bearing on stack traces, but will
diff --git a/target/product/gsi_common.mk b/target/product/gsi_common.mk
index e87309b..fb0478d 100644
--- a/target/product/gsi_common.mk
+++ b/target/product/gsi_common.mk
@@ -24,12 +24,12 @@
$(call inherit-product-if-exists, frameworks/base/data/sounds/AllAudio.mk)
# Additional settings used in all AOSP builds
-PRODUCT_PROPERTY_OVERRIDES := \
+PRODUCT_PROPERTY_OVERRIDES += \
ro.config.ringtone=Ring_Synth_04.ogg \
ro.config.notification_sound=pixiedust.ogg
# The mainline checking whitelist, should be clean up
-PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST := \
+PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \
system/app/messaging/messaging.apk \
system/app/PhotoTable/PhotoTable.apk \
system/app/WAPPushManager/WAPPushManager.apk \
diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py
index cfa81e1..9cda0bd 100644
--- a/tools/releasetools/common.py
+++ b/tools/releasetools/common.py
@@ -46,9 +46,15 @@
class Options(object):
def __init__(self):
+ base_out_path = os.getenv('OUT_DIR_COMMON_BASE')
+ if base_out_path is None:
+ base_search_path = "out"
+ else:
+ base_search_path = os.path.join(base_out_path, os.path.basename(os.getcwd()))
+
platform_search_path = {
- "linux2": "out/host/linux-x86",
- "darwin": "out/host/darwin-x86",
+ "linux2": os.path.join(base_search_path, "host/linux-x86"),
+ "darwin": os.path.join(base_search_path, "host/darwin-x86"),
}
self.search_path = platform_search_path.get(sys.platform)
diff --git a/tools/releasetools/merge_target_files.py b/tools/releasetools/merge_target_files.py
index 2645829..5014516 100755
--- a/tools/releasetools/merge_target_files.py
+++ b/tools/releasetools/merge_target_files.py
@@ -25,10 +25,22 @@
The input target files package containing system bits. This is a zip
archive.
+ --system-item-list system-item-list-file
+ The optional path to a newline-separated config file that replaces the
+ contents of default_system_item_list if provided.
+
+ --system-misc-info-keys system-misc-info-keys-file
+ The optional path to a newline-separated config file that replaces the
+ contents of default_system_misc_info_keys if provided.
+
--other-target-files other-target-files-zip-archive
The input target files package containing other bits. This is a zip
archive.
+ --other-item-list other-item-list-file
+ The optional path to a newline-separated config file that replaces the
+ contents of default_other_item_list if provided.
+
--output-target-files output-target-files-package
The output merged target files package. Also a zip archive.
"""
@@ -48,16 +60,19 @@
OPTIONS = common.OPTIONS
OPTIONS.verbose = True
OPTIONS.system_target_files = None
+OPTIONS.system_item_list = None
+OPTIONS.system_misc_info_keys = None
OPTIONS.other_target_files = None
+OPTIONS.other_item_list = None
OPTIONS.output_target_files = None
OPTIONS.keep_tmp = False
-# system_extract_as_is_item_list is a list of items to extract from the partial
+# default_system_item_list is a list of items to extract from the partial
# system target files package as is, meaning these items will land in the
# output target files package exactly as they appear in the input partial
# system target files package.
-system_extract_as_is_item_list = [
+default_system_item_list = [
'META/apkcerts.txt',
'META/filesystem_config.txt',
'META/root_filesystem_config.txt',
@@ -78,10 +93,10 @@
'META/*',
]
-# system_misc_info_keys is a list of keys to obtain from the system instance of
+# default_system_misc_info_keys is a list of keys to obtain from the system instance of
# META/misc_info.txt. The remaining keys from the other instance.
-system_misc_info_keys = [
+default_system_misc_info_keys = [
'avb_system_hashtree_enable',
'avb_system_add_hashtree_footer_args',
'avb_system_key_path',
@@ -98,12 +113,12 @@
'system_size',
]
-# other_extract_as_is_item_list is a list of items to extract from the partial
+# default_other_item_list is a list of items to extract from the partial
# other target files package as is, meaning these items will land in the output
# target files package exactly as they appear in the input partial other target
# files package.
-other_extract_as_is_item_list = [
+default_other_item_list = [
'META/boot_filesystem_config.txt',
'META/otakeys.txt',
'META/releasetools.py',
@@ -119,7 +134,7 @@
'VENDOR/*',
]
-# other_extract_for_merge_item_list is a list of items to extract from the
+# other_extract_special_item_list is a list of items to extract from the
# partial other target files package that need some special processing, such as
# some sort of combination with items from the partial system target files
# package.
@@ -172,6 +187,18 @@
filtered_extract_item_list)
+def read_config_list(config_file_path):
+ """Reads a config file into a list of strings.
+
+ Expects the file to be newline-separated.
+
+ Args:
+ config_file_path: The path to the config file to open and read.
+ """
+ with open(config_file_path) as config_file:
+ return config_file.read().splitlines()
+
+
def process_ab_partitions_txt(
system_target_files_temp_dir,
other_target_files_temp_dir,
@@ -223,7 +250,8 @@
def process_misc_info_txt(
system_target_files_temp_dir,
other_target_files_temp_dir,
- output_target_files_temp_dir):
+ output_target_files_temp_dir,
+ system_misc_info_keys):
"""Perform special processing for META/misc_info.txt
This function merges the contents of the META/misc_info.txt files from the
@@ -242,6 +270,9 @@
output_target_files_temp_dir: The name of a directory that will be used
to create the output target files package after all the special cases
are processed.
+
+ system_misc_info_keys: A list of keys to obtain from the system instance
+ of META/misc_info.txt. The remaining keys from the other instance.
"""
def read_helper(d):
@@ -258,8 +289,7 @@
read_helper(other_target_files_temp_dir))
# Replace certain values in merged_info_dict with values from
- # system_info_dict. TODO(b/124467065): This should be more flexible than
- # using the hard-coded system_misc_info_keys.
+ # system_info_dict.
for key in system_misc_info_keys:
merged_info_dict[key] = system_info_dict[key]
@@ -355,7 +385,8 @@
temp_dir,
system_target_files_temp_dir,
other_target_files_temp_dir,
- output_target_files_temp_dir):
+ output_target_files_temp_dir,
+ system_misc_info_keys):
"""Perform special-case processing for certain target files items.
Certain files in the output target files package require special-case
@@ -374,6 +405,9 @@
output_target_files_temp_dir: The name of a directory that will be used
to create the output target files package after all the special cases
are processed.
+
+ system_misc_info_keys: A list of keys to obtain from the system instance
+ of META/misc_info.txt. The remaining keys from the other instance.
"""
process_ab_partitions_txt(
@@ -384,7 +418,8 @@
process_misc_info_txt(
system_target_files_temp_dir=system_target_files_temp_dir,
other_target_files_temp_dir=other_target_files_temp_dir,
- output_target_files_temp_dir=output_target_files_temp_dir)
+ output_target_files_temp_dir=output_target_files_temp_dir,
+ system_misc_info_keys=system_misc_info_keys)
process_file_contexts_bin(
temp_dir=temp_dir,
@@ -394,7 +429,10 @@
def merge_target_files(
temp_dir,
system_target_files,
+ system_item_list,
+ system_misc_info_keys,
other_target_files,
+ other_item_list,
output_target_files):
"""Merge two target files packages together.
@@ -410,13 +448,32 @@
system_target_files: The name of the zip archive containing the system
partial target files package.
+ system_item_list: The list of items to extract from the partial system
+ target files package as is, meaning these items will land in the output
+ target files package exactly as they appear in the input partial system
+ target files package.
+
+ system_misc_info_keys: The list of keys to obtain from the system instance
+ of META/misc_info.txt. The remaining keys from the other instance.
+
other_target_files: The name of the zip archive containing the other
partial target files package.
+ other_item_list: The list of items to extract from the partial other
+ target files package as is, meaning these items will land in the output
+ target files package exactly as they appear in the input partial other
+ target files package.
+
output_target_files: The name of the output zip archive target files
package created by merging system and other.
"""
+ logger.info(
+ 'starting: merge system %s and other %s into output %s',
+ system_target_files,
+ other_target_files,
+ output_target_files)
+
# Create directory names that we'll use when we extract files from system,
# and other, and for zipping the final output.
@@ -431,7 +488,7 @@
extract_items(
target_files=system_target_files,
target_files_temp_dir=output_target_files_temp_dir,
- extract_item_list=system_extract_as_is_item_list)
+ extract_item_list=system_item_list)
# Extract "as is" items from the input other partial target files package. We
# extract them directly into the output temporary directory since the items
@@ -440,7 +497,7 @@
extract_items(
target_files=other_target_files,
target_files_temp_dir=output_target_files_temp_dir,
- extract_item_list=other_extract_as_is_item_list)
+ extract_item_list=other_item_list)
# Extract "special" items from the input system partial target files package.
# We extract these items to different directory since they require special
@@ -469,7 +526,8 @@
temp_dir=temp_dir,
system_target_files_temp_dir=system_target_files_temp_dir,
other_target_files_temp_dir=other_target_files_temp_dir,
- output_target_files_temp_dir=output_target_files_temp_dir)
+ output_target_files_temp_dir=output_target_files_temp_dir,
+ system_misc_info_keys=system_misc_info_keys)
# Regenerate IMAGES in the temporary directory.
@@ -520,25 +578,15 @@
common.RunAndWait(command, verbose=True)
-def merge_target_files_with_temp_dir(
- system_target_files,
- other_target_files,
- output_target_files,
- keep_tmp):
+def call_func_with_temp_dir(func, keep_tmp):
"""Manage the creation and cleanup of the temporary directory.
- This function wraps merge_target_files after first creating a temporary
+ This function calls the given function after first creating a temporary
directory. It also cleans up the temporary directory.
Args:
- system_target_files: The name of the zip archive containing the system
- partial target files package.
-
- other_target_files: The name of the zip archive containing the other
- partial target files package.
-
- output_target_files: The name of the output zip archive target files
- package created by merging system and other.
+ func: The function to call. Should accept one parameter, the path to
+ the temporary directory.
keep_tmp: Keep the temporary directory after processing is complete.
"""
@@ -547,20 +595,10 @@
# we use when we extract items from the input target files packages, and also
# a scratch directory that we use for temporary files.
- logger.info(
- 'starting: merge system %s and other %s into output %s',
- system_target_files,
- other_target_files,
- output_target_files)
-
temp_dir = common.MakeTempDir(prefix='merge_target_files_')
try:
- merge_target_files(
- temp_dir=temp_dir,
- system_target_files=system_target_files,
- other_target_files=other_target_files,
- output_target_files=output_target_files)
+ func(temp_dir)
except:
raise
finally:
@@ -573,7 +611,7 @@
def main():
"""The main function.
- Process command line arguments, then call merge_target_files_with_temp_dir to
+ Process command line arguments, then call merge_target_files to
perform the heavy lifting.
"""
@@ -582,8 +620,14 @@
def option_handler(o, a):
if o == '--system-target-files':
OPTIONS.system_target_files = a
+ elif o == '--system-item-list':
+ OPTIONS.system_item_list = a
+ elif o == '--system-misc-info-keys':
+ OPTIONS.system_misc_info_keys = a
elif o == '--other-target-files':
OPTIONS.other_target_files = a
+ elif o == '--other-item-list':
+ OPTIONS.other_item_list = a
elif o == '--output-target-files':
OPTIONS.output_target_files = a
elif o == '--keep_tmp':
@@ -596,7 +640,10 @@
sys.argv[1:], __doc__,
extra_long_opts=[
'system-target-files=',
+ 'system-item-list=',
+ 'system-misc-info-keys=',
'other-target-files=',
+ 'other-item-list=',
'output-target-files=',
"keep_tmp",
],
@@ -609,11 +656,31 @@
common.Usage(__doc__)
sys.exit(1)
- merge_target_files_with_temp_dir(
- system_target_files=OPTIONS.system_target_files,
- other_target_files=OPTIONS.other_target_files,
- output_target_files=OPTIONS.output_target_files,
- keep_tmp=OPTIONS.keep_tmp)
+ if OPTIONS.system_item_list:
+ system_item_list = read_config_list(OPTIONS.system_item_list)
+ else:
+ system_item_list = default_system_item_list
+
+ if OPTIONS.system_misc_info_keys:
+ system_misc_info_keys = read_config_list(OPTIONS.system_misc_info_keys)
+ else:
+ system_misc_info_keys = default_system_misc_info_keys
+
+ if OPTIONS.other_item_list:
+ other_item_list = read_config_list(OPTIONS.other_item_list)
+ else:
+ other_item_list = default_other_item_list
+
+ call_func_with_temp_dir(
+ lambda temp_dir: merge_target_files(
+ temp_dir=temp_dir,
+ system_target_files=OPTIONS.system_target_files,
+ system_item_list=system_item_list,
+ system_misc_info_keys=system_misc_info_keys,
+ other_target_files=OPTIONS.other_target_files,
+ other_item_list=other_item_list,
+ output_target_files=OPTIONS.output_target_files),
+ OPTIONS.keep_tmp)
if __name__ == '__main__':