forked from openkylin/platform_build
Add support for combining the notices from 2 roots.
Apparently needed for cts tests due to apks putting intermediate files under TARGET_OUT even when going to HOST_OUT. Test: m with and without change verified no differences in notice files Bug: 141258651 Change-Id: Iea50b6bd9af9452a2600c97e2f7cb89218b9be7f (cherry picked from commit5e9e1fbe83
) Merged-In: Iea50b6bd9af9452a2600c97e2f7cb89218b9be7f (cherry picked from commit74a6a0a32a
)
This commit is contained in:
parent
931962dbbd
commit
53755cfbc9
|
@ -1427,7 +1427,7 @@ $(3) : $(6) $(BUILD_SYSTEM)/Makefile build/make/tools/generate-notice-files.py
|
||||||
$(if $(filter $(1),xml_system),-i system --xml-output, \
|
$(if $(filter $(1),xml_system),-i system --xml-output, \
|
||||||
$(if $(filter $(1),xml_odm),-i odm --xml-output, \
|
$(if $(filter $(1),xml_odm),-i odm --xml-output, \
|
||||||
--html-output)))))) $(3) \
|
--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)
|
notice_files: $(2) $(3)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
|
@ -73,10 +73,10 @@ body { padding: 0; font-family: sans-serif; }
|
||||||
</style>
|
</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."""
|
"""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
|
# 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)
|
# 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>"
|
print >> output_file, "</body></html>"
|
||||||
output_file.close()
|
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."""
|
"""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")
|
output_file = open(output_filename, "wb")
|
||||||
print >> output_file, file_title
|
print >> output_file, file_title
|
||||||
for value in file_hash:
|
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()
|
print >> output_file, open(value[0]).read()
|
||||||
output_file.close()
|
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."""
|
"""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
|
# 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)
|
# most browsers, but href's to table row ids do)
|
||||||
|
@ -205,7 +205,7 @@ def get_args():
|
||||||
'-t', '--title', required=True,
|
'-t', '--title', required=True,
|
||||||
help='The file title.')
|
help='The file title.')
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-s', '--source-dir', required=True,
|
'-s', '--source-dir', required=True, action='append',
|
||||||
help='The directory containing notices.')
|
help='The directory containing notices.')
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-i', '--included-subdirs', action='append',
|
'-i', '--included-subdirs', action='append',
|
||||||
|
@ -229,39 +229,40 @@ def main(argv):
|
||||||
if args.excluded_subdirs is not None:
|
if args.excluded_subdirs is not None:
|
||||||
excluded_subdirs = args.excluded_subdirs
|
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
|
# Find all the notice files and md5 them
|
||||||
input_dir = os.path.normpath(args.source_dir)
|
for input_dir in input_dirs:
|
||||||
files_with_same_hash = defaultdict(list)
|
files_with_same_hash = defaultdict(list)
|
||||||
for root, dir, files in os.walk(input_dir):
|
for root, dir, files in os.walk(input_dir):
|
||||||
for file in files:
|
for file in files:
|
||||||
matched = True
|
matched = True
|
||||||
if len(included_subdirs) > 0:
|
if len(included_subdirs) > 0:
|
||||||
matched = False
|
matched = False
|
||||||
for subdir in included_subdirs:
|
for subdir in included_subdirs:
|
||||||
if (root == (input_dir + '/' + subdir) or
|
if (root == (input_dir + '/' + subdir) or
|
||||||
root.startswith(input_dir + '/' + subdir + '/')):
|
root.startswith(input_dir + '/' + subdir + '/')):
|
||||||
matched = True
|
matched = True
|
||||||
break
|
break
|
||||||
elif len(excluded_subdirs) > 0:
|
elif len(excluded_subdirs) > 0:
|
||||||
for subdir in excluded_subdirs:
|
for subdir in excluded_subdirs:
|
||||||
if (root == (input_dir + '/' + subdir) or
|
if (root == (input_dir + '/' + subdir) or
|
||||||
root.startswith(input_dir + '/' + subdir + '/')):
|
root.startswith(input_dir + '/' + subdir + '/')):
|
||||||
matched = False
|
matched = False
|
||||||
break
|
break
|
||||||
if matched and file.endswith(".txt"):
|
if matched and file.endswith(".txt"):
|
||||||
filename = os.path.join(root, file)
|
filename = os.path.join(root, file)
|
||||||
file_md5sum = md5sum(filename)
|
file_md5sum = md5sum(filename)
|
||||||
files_with_same_hash[file_md5sum].append(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())]
|
filesets = [sorted(files_with_same_hash[md5]) for md5 in sorted(files_with_same_hash.keys())]
|
||||||
|
|
||||||
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:
|
if html_output_file is not None:
|
||||||
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:
|
if xml_output_file is not None:
|
||||||
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__":
|
if __name__ == "__main__":
|
||||||
main(sys.argv)
|
main(sys.argv)
|
||||||
|
|
Loading…
Reference in New Issue