diff options
author | Joe Zhou Wang <wangzhou@google.com> | 2020-09-25 20:03:33 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2020-09-25 20:03:33 +0000 |
commit | 6dcab493834b3d33a4e44e7bdf92e999a947d64b (patch) | |
tree | f05682eaecc43121217bf919ed51693d767a58d4 | |
parent | af0825a6bc29efb651389ccd1f8e277acff24941 (diff) | |
parent | be9dab261dca9c81090c84ece42f46fa3aab0223 (diff) | |
download | build-6dcab493834b3d33a4e44e7bdf92e999a947d64b.tar.gz |
Merge changes from topic "cts-notice-in-oreo-mr1" into oreo-mr1-cts-dev
* changes:
Combine HOST/TARGET in Test Suite NOTICE.
Build NOTICE txt file into TestSuite zip package.
Add support for combining the notices from 2 roots.
-rw-r--r-- | core/Makefile | 2 | ||||
-rw-r--r-- | core/tasks/cts.mk | 1 | ||||
-rw-r--r-- | core/tasks/tools/compatibility.mk | 25 | ||||
-rwxr-xr-x | tools/generate-notice-files.py | 66 |
4 files changed, 59 insertions, 35 deletions
diff --git a/core/Makefile b/core/Makefile index 618e98317b..7a25dc7d5f 100644 --- a/core/Makefile +++ b/core/Makefile @@ -769,7 +769,7 @@ $(3) : $(6) $(BUILD_SYSTEM)/Makefile build/tools/generate-notice-files.py $(if $(filter $(1),xml_excluded_vendor),-e vendor --xml-output, \ $(if $(filter $(1),xml_vendor),-i vendor --xml-output, \ --html-output)) $(3) \ - -t $$(PRIVATE_MESSAGE) -s $$(PRIVATE_DIR)/src + -t $$(PRIVATE_MESSAGE) $$(foreach dir,$$(sort $$(PRIVATE_DIR)), -s $$(dir)/src) notice_files: $(2) $(3) endef diff --git a/core/tasks/cts.mk b/core/tasks/cts.mk index fdd9591768..c09daeb4af 100644 --- a/core/tasks/cts.mk +++ b/core/tasks/cts.mk @@ -16,6 +16,7 @@ test_suite_name := cts test_suite_tradefed := cts-tradefed test_suite_dynamic_config := cts/tools/cts-tradefed/DynamicConfig.xml test_suite_readme := cts/tools/cts-tradefed/README +include_test_suite_notice := true include $(BUILD_SYSTEM)/tasks/tools/compatibility.mk diff --git a/core/tasks/tools/compatibility.mk b/core/tasks/tools/compatibility.mk index 0fc20452a9..7992a24e8d 100644 --- a/core/tasks/tools/compatibility.mk +++ b/core/tasks/tools/compatibility.mk @@ -38,19 +38,39 @@ test_tools := $(HOST_OUT_JAVA_LIBRARIES)/hosttestlib.jar \ $(HOST_OUT_EXECUTABLES)/$(test_suite_tradefed) \ $(test_suite_readme) +compatibility_zip_deps := $(test_artifacts) $(test_tools) $(test_suite_prebuilt_tools) $(test_suite_dynamic_config) $(SOONG_ZIP) +compatibility_zip_resources := $(out_dir)/tools $(out_dir)/testcases + +# Test Suite NOTICE files +test_suite_notice_txt := $(out_dir)/NOTICE.txt +test_suite_notice_html := $(out_dir)/NOTICE.html + +$(eval $(call combine-notice-files, html, \ + $(test_suite_notice_txt), \ + $(test_suite_notice_html), \ + "Notices for files contained in the test suites filesystem image in this directory:", \ + $(HOST_OUT_NOTICE_FILES) $(TARGET_OUT_NOTICE_FILES), \ + $(compatibility_zip_deps))) + +ifeq ($(include_test_suite_notice),true) + compatibility_zip_deps += $(test_suite_notice_txt) + compatibility_zip_resources += $(test_suite_notice_txt) +endif + compatibility_zip := $(out_dir).zip $(compatibility_zip): PRIVATE_NAME := android-$(test_suite_name) $(compatibility_zip): PRIVATE_OUT_DIR := $(out_dir) $(compatibility_zip): PRIVATE_TOOLS := $(test_tools) $(test_suite_prebuilt_tools) $(compatibility_zip): PRIVATE_SUITE_NAME := $(test_suite_name) $(compatibility_zip): PRIVATE_DYNAMIC_CONFIG := $(test_suite_dynamic_config) -$(compatibility_zip): $(test_artifacts) $(test_tools) $(test_suite_prebuilt_tools) $(test_suite_dynamic_config) $(SOONG_ZIP) | $(ADB) $(ACP) +$(compatibility_zip): PRIVATE_RESOURCES := $(compatibility_zip_resources) +$(compatibility_zip): $(compatibility_zip_deps) | $(ADB) $(ACP) # Make dir structure $(hide) mkdir -p $(PRIVATE_OUT_DIR)/tools $(PRIVATE_OUT_DIR)/testcases # Copy tools $(hide) $(ACP) -fp $(PRIVATE_TOOLS) $(PRIVATE_OUT_DIR)/tools $(if $(PRIVATE_DYNAMIC_CONFIG),$(hide) $(ACP) -fp $(PRIVATE_DYNAMIC_CONFIG) $(PRIVATE_OUT_DIR)/testcases/$(PRIVATE_SUITE_NAME).dynamic) - $(hide) find $(dir $@)/$(PRIVATE_NAME) | sort >$@.list + $(hide) find $(PRIVATE_RESOURCES) | sort >$@.list $(hide) $(SOONG_ZIP) -d -o $@ -C $(dir $@) -l $@.list # Reset all input variables @@ -59,3 +79,4 @@ test_suite_tradefed := test_suite_dynamic_config := test_suite_readme := test_suite_prebuilt_tools := +include_test_suite_notice := diff --git a/tools/generate-notice-files.py b/tools/generate-notice-files.py index adbf7c2315..2c319abb6b 100755 --- a/tools/generate-notice-files.py +++ b/tools/generate-notice-files.py @@ -73,10 +73,10 @@ body { padding: 0; font-family: sans-serif; } </style> """ -def combine_notice_files_html(file_hash, input_dir, output_filename): +def combine_notice_files_html(file_hash, input_dirs, output_filename): """Combine notice files in FILE_HASH and output a HTML version to OUTPUT_FILENAME.""" - SRC_DIR_STRIP_RE = re.compile(input_dir + "(/.*).txt") + SRC_DIR_STRIP_RE = re.compile("(?:" + "|".join(input_dirs) + ")(/.*).txt") # Set up a filename to row id table (anchors inside tables don't work in # most browsers, but href's to table row ids do) @@ -131,10 +131,10 @@ def combine_notice_files_html(file_hash, input_dir, output_filename): print >> output_file, "</body></html>" output_file.close() -def combine_notice_files_text(file_hash, input_dir, output_filename, file_title): +def combine_notice_files_text(file_hash, input_dirs, output_filename, file_title): """Combine notice files in FILE_HASH and output a text version to OUTPUT_FILENAME.""" - SRC_DIR_STRIP_RE = re.compile(input_dir + "(/.*).txt") + SRC_DIR_STRIP_RE = re.compile("(?:" + "|".join(input_dirs) + ")(/.*).txt") output_file = open(output_filename, "wb") print >> output_file, file_title for value in file_hash: @@ -146,10 +146,10 @@ def combine_notice_files_text(file_hash, input_dir, output_filename, file_title) print >> output_file, open(value[0]).read() output_file.close() -def combine_notice_files_xml(files_with_same_hash, input_dir, output_filename): +def combine_notice_files_xml(files_with_same_hash, input_dirs, output_filename): """Combine notice files in FILE_HASH and output a XML version to OUTPUT_FILENAME.""" - SRC_DIR_STRIP_RE = re.compile(input_dir + "(/.*).txt") + SRC_DIR_STRIP_RE = re.compile("(?:" + "|".join(input_dirs) + ")(/.*).txt") # Set up a filename to row id table (anchors inside tables don't work in # most browsers, but href's to table row ids do) @@ -205,7 +205,7 @@ def get_args(): '-t', '--title', required=True, help='The file title.') parser.add_argument( - '-s', '--source-dir', required=True, + '-s', '--source-dir', required=True, action='append', help='The directory containing notices.') parser.add_argument( '-i', '--included-subdirs', action='append', @@ -229,40 +229,42 @@ def main(argv): if args.excluded_subdirs is not None: excluded_subdirs = args.excluded_subdirs + input_dirs = [os.path.normpath(source_dir) for source_dir in args.source_dir] # Find all the notice files and md5 them - input_dir = os.path.normpath(args.source_dir) - files_with_same_hash = defaultdict(list) - for root, dir, files in os.walk(input_dir): - for file in files: - matched = True - if len(included_subdirs) > 0: - matched = False - for subdir in included_subdirs: - if root.startswith(input_dir + '/' + subdir): - matched = True - break - elif len(excluded_subdirs) > 0: - for subdir in excluded_subdirs: - if root.startswith(input_dir + '/' + subdir): - matched = False - break - if matched and file.endswith(".txt"): - filename = os.path.join(root, file) - file_md5sum = md5sum(filename) - files_with_same_hash[file_md5sum].append(filename) - - filesets = [sorted(files_with_same_hash[md5]) for md5 in sorted(files_with_same_hash.keys())] + for input_dir in input_dirs: + files_with_same_hash = defaultdict(list) + for root, dir, files in os.walk(input_dir): + for file in files: + matched = True + if len(included_subdirs) > 0: + matched = False + for subdir in included_subdirs: + if root.startswith(input_dir + '/' + subdir): + matched = True + break + elif len(excluded_subdirs) > 0: + for subdir in excluded_subdirs: + if root.startswith(input_dir + '/' + subdir): + matched = False + break + if matched and file.endswith(".txt"): + filename = os.path.join(root, file) + file_md5sum = md5sum(filename) + files_with_same_hash[file_md5sum].append(filename) + + filesets = [sorted(files_with_same_hash[md5]) for md5 in sorted(files_with_same_hash.keys())] print "Combining NOTICE files into text" - combine_notice_files_text(filesets, input_dir, txt_output_file, file_title) + + combine_notice_files_text(filesets, input_dirs, txt_output_file, file_title) if html_output_file is not None: print "Combining NOTICE files into HTML" - combine_notice_files_html(filesets, input_dir, html_output_file) + combine_notice_files_html(filesets, input_dirs, html_output_file) if xml_output_file is not None: print "Combining NOTICE files into XML" - combine_notice_files_xml(files_with_same_hash, input_dir, xml_output_file) + combine_notice_files_xml(files_with_same_hash, input_dirs, xml_output_file) if __name__ == "__main__": main(sys.argv) |