Small script fixes.
Fix a problem with python3 and the zipinfo processing of an apk.
Add sorting of the zipinfo data since it's not guaranteed that
the zip entries will be in sorted order, so sort them.
Bug: https://github.com/android/ndk/issues/1587
Test: Ran a apk stack line through the script.
Test: Ran the stack core unit tests.
Change-Id: Ie5ea67ad54a6b2de077e53740c82265f6bf783c6
diff --git a/scripts/stack_core.py b/scripts/stack_core.py
index 6801fa1..22997bf 100755
--- a/scripts/stack_core.py
+++ b/scripts/stack_core.py
@@ -261,7 +261,8 @@
print("Cannot find apk", apk)
return None, None
- cmd = subprocess.Popen(["zipinfo", "-v", apk_full_path], stdout=subprocess.PIPE)
+ cmd = subprocess.Popen(["zipinfo", "-v", apk_full_path], stdout=subprocess.PIPE,
+ encoding='utf8')
# Find the first central info marker.
for line in cmd.stdout:
if self.zipinfo_central_directory_line.search(line):
@@ -284,6 +285,10 @@
if not file_name and offset >= start and offset < end:
file_name = cur_name
+ # Make sure the offset_list is sorted, the zip file does not guarantee
+ # that the entries are in order.
+ offset_list = sorted(offset_list, key=lambda entry: entry[1])
+
# Save the information from the zip.
tmp_files = dict()
self.apk_info[apk] = [apk_full_path, offset_list, tmp_files]