Support comparing separate workspaces

Allow comparing "out" folders that do not share a common Android source
root eg. workspace1/out/... to workspace2/out/...

Test: python system_image_diff.py <system1> <system2>
Bug: 116612996
Change-Id: I0256bbc9196b11df49fd61cd56d44f428907838b
This commit is contained in:
Michael Schwartz
2018-10-12 14:25:19 -07:00
parent 28cd5ef94a
commit ba03a6ebcb

View File

@@ -24,6 +24,17 @@ VENDOR_PATH_MAP = {
'vendor/realtek' : 'Realtek'
}
def _get_relative_out_path_from_root(out_path):
"""Given a path to a target out directory, get the relative path from the
Android root.
The module-info.json file paths are relative to the root source folder
ie. one directory before out."""
system_path = os.path.normpath(os.path.join(out_path, 'system'))
system_path_dirs = system_path.split(os.sep)
out_index = system_path_dirs.index("out")
return os.path.join(*system_path_dirs[out_index:])
def system_files(path):
"""Returns an array of the files under /system, recursively, and ignoring
symbolic-links"""
@@ -44,7 +55,7 @@ def system_files_to_package_map(path):
"""Returns a dictionary mapping from each file in the /system partition to its
package, according to modules-info.json."""
system_files_to_package_map = {}
system_prefix = os.path.join(path, 'system')
system_prefix = _get_relative_out_path_from_root(path)
# Skip trailing '/'
system_prefix_len = len(system_prefix) + 1