Create ABI reference dumps for libraries with multiple tags
A library may have both VNDK variant and stubs. The variants are tagged with VNDK and PLATFORM in lsdump_paths.txt. create_reference_dumps.py should generate the ABI dumps for both. Bug: 152277104 Test: ./create_reference_dumps.py Test: ./create_reference_dumps.py -libs libselinux Change-Id: I2ee43d70efcdee43de821c93c31cdb628c36ecb1
This commit is contained in:
@@ -178,8 +178,8 @@ def make_libraries(product, variant, vndk_version, targets, libs):
|
|||||||
for name in libs:
|
for name in libs:
|
||||||
if not (name in lsdump_paths and lsdump_paths[name]):
|
if not (name in lsdump_paths and lsdump_paths[name]):
|
||||||
raise KeyError('Cannot find lsdump for %s.' % name)
|
raise KeyError('Cannot find lsdump for %s.' % name)
|
||||||
make_target_paths.extend(path for tag, path in
|
for tag_path_dict in lsdump_paths[name].values():
|
||||||
lsdump_paths[name].values())
|
make_target_paths.extend(tag_path_dict.values())
|
||||||
make_targets(product, variant, make_target_paths)
|
make_targets(product, variant, make_target_paths)
|
||||||
|
|
||||||
|
|
||||||
@@ -210,18 +210,18 @@ def _get_module_variant_dir_name(tag, vndk_version, arch_cpu_str):
|
|||||||
def _read_lsdump_paths(lsdump_paths_file_path, vndk_version, targets):
|
def _read_lsdump_paths(lsdump_paths_file_path, vndk_version, targets):
|
||||||
"""Read lsdump paths from lsdump_paths.txt for each libname and variant.
|
"""Read lsdump paths from lsdump_paths.txt for each libname and variant.
|
||||||
|
|
||||||
This function returns a dictionary, {lib_name: {arch_cpu: (tag, path)}}.
|
This function returns a dictionary, {lib_name: {arch_cpu: {tag: path}}}.
|
||||||
For example,
|
For example,
|
||||||
{
|
{
|
||||||
"libc": {
|
"libc": {
|
||||||
"x86_x86_64": (
|
"x86_x86_64": {
|
||||||
"NDK",
|
"NDK": "path/to/libc.so.lsdump"
|
||||||
"path/to/libc.so.lsdump"
|
}
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
lsdump_paths = collections.defaultdict(dict)
|
lsdump_paths = collections.defaultdict(
|
||||||
|
lambda: collections.defaultdict(dict))
|
||||||
suffixes = collections.defaultdict(dict)
|
suffixes = collections.defaultdict(dict)
|
||||||
|
|
||||||
with open(lsdump_paths_file_path, 'r') as lsdump_paths_file:
|
with open(lsdump_paths_file_path, 'r') as lsdump_paths_file:
|
||||||
@@ -252,7 +252,7 @@ def _read_lsdump_paths(lsdump_paths_file_path, vndk_version, targets):
|
|||||||
continue
|
continue
|
||||||
old_suffix = suffixes[libname].get(arch_cpu)
|
old_suffix = suffixes[libname].get(arch_cpu)
|
||||||
if not old_suffix or new_suffix > old_suffix:
|
if not old_suffix or new_suffix > old_suffix:
|
||||||
lsdump_paths[libname][arch_cpu] = (tag, path)
|
lsdump_paths[libname][arch_cpu][tag] = path
|
||||||
suffixes[libname][arch_cpu] = new_suffix
|
suffixes[libname][arch_cpu] = new_suffix
|
||||||
return lsdump_paths
|
return lsdump_paths
|
||||||
|
|
||||||
@@ -287,9 +287,10 @@ def find_lib_lsdumps(lsdump_paths, libs, target):
|
|||||||
arch_cpu in lsdump_paths[lib_name]):
|
arch_cpu in lsdump_paths[lib_name]):
|
||||||
raise KeyError('Cannot find lsdump for %s, %s.' %
|
raise KeyError('Cannot find lsdump for %s, %s.' %
|
||||||
(lib_name, arch_cpu))
|
(lib_name, arch_cpu))
|
||||||
result.append(lsdump_paths[lib_name][arch_cpu])
|
result.extend(lsdump_paths[lib_name][arch_cpu].items())
|
||||||
else:
|
else:
|
||||||
result.extend(paths[arch_cpu] for paths in lsdump_paths.values())
|
for arch_tag_path_dict in lsdump_paths.values():
|
||||||
|
result.extend(arch_tag_path_dict[arch_cpu].items())
|
||||||
return [(tag, os.path.join(AOSP_DIR, path)) for tag, path in result]
|
return [(tag, os.path.join(AOSP_DIR, path)) for tag, path in result]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user