Refactor compare_images

* Drop unused import
* Simplify filename globbing logic

Test: Manually test noop
Change-Id: Ib1e491a47b2fd4fa76884571259f8c6764dbb547
This commit is contained in:
Yo Chiang
2019-11-11 11:48:50 +08:00
parent 1169e31d15
commit b783c4955b

View File

@@ -18,7 +18,6 @@ import subprocess
import sys import sys
from collections import defaultdict from collections import defaultdict
from pathlib import Path from pathlib import Path
from operator import itemgetter
import hashlib import hashlib
import argparse import argparse
import zipfile import zipfile
@@ -42,7 +41,9 @@ def sha1sum_without_signing_key(filepath):
def strip_and_sha1sum(filepath): def strip_and_sha1sum(filepath):
tmp_filepath = filepath + '.tmp.no-build-id' tmp_filepath = filepath + '.tmp.no-build-id'
strip_all_and_remove_build_id = lambda: silent_call(["llvm-strip", "--strip-all", "--keep-section=.ARM.attributes", "--remove-section=.note.gnu.build-id", filepath, "-o", tmp_filepath]) strip_all_and_remove_build_id = lambda: silent_call(
["llvm-strip", "--strip-all", "--keep-section=.ARM.attributes",
"--remove-section=.note.gnu.build-id", filepath, "-o", tmp_filepath])
try: try:
if strip_all_and_remove_build_id(): if strip_all_and_remove_build_id():
return sha1sum(tmp_filepath) return sha1sum(tmp_filepath)
@@ -58,27 +59,26 @@ def strip_and_sha1sum(filepath):
def main(all_targets, search_paths, ignore_signing_key=False): def main(all_targets, search_paths, ignore_signing_key=False):
def get_target_name(path): def get_target_name(path):
return os.path.basename(os.path.normpath(path)) return os.path.basename(os.path.normpath(path))
artifact_target_map = defaultdict(list)
for target in all_targets:
def valid_path(p):
if os.path.isdir(p) or not os.path.exists(p):
return False
for s in search_paths:
if os.path.join(target, s).lower() + os.path.sep in p.lower():
return True
return False
paths = [str(path) for path in Path(target).glob('**/*') if valid_path(str(path))]
def run(path): def run(path):
is_native_component = silent_call(["llvm-objdump", "-a", path]) is_native_component = silent_call(["llvm-objdump", "-a", path])
is_apk = path.endswith('.apk') is_apk = path.endswith('.apk')
if is_native_component: if is_native_component:
return strip_and_sha1sum(path), path[len(target):] return strip_and_sha1sum(path)
elif is_apk and ignore_signing_key: elif is_apk and ignore_signing_key:
return sha1sum_without_signing_key(path), path[len(target):] return sha1sum_without_signing_key(path)
else: else:
return sha1sum(path), path[len(target):] return sha1sum(path)
results = [run(p) for p in paths]
artifact_target_map = defaultdict(list)
for target in all_targets:
paths = []
for search_path in search_paths:
for path in Path(target, search_path).glob('**/*'):
if path.exists() and not path.is_dir():
paths.append((str(path), str(path.relative_to(target))))
results = [(run(path), filename) for path, filename in paths]
for sha1, filename in results: for sha1, filename in results:
artifact_target_map[(sha1, filename)].append(get_target_name(target)) artifact_target_map[(sha1, filename)].append(get_target_name(target))