vndk-def: Refactor compute_sp_lib() return value
This commit adds SPLibResult namedtuple to hold the return value of
ELFLinker.compute_sp_lib().
Test: ./tests/run.py
Change-Id: I53704e5fdb41571a375f41c6917f57f489b40e92
diff --git a/vndk/tools/definition-tool/tests/test_elf_linker.py b/vndk/tools/definition-tool/tests/test_elf_linker.py
index 25129a7..358a4c5 100755
--- a/vndk/tools/definition-tool/tests/test_elf_linker.py
+++ b/vndk/tools/definition-tool/tests/test_elf_linker.py
@@ -426,20 +426,22 @@
return GenericRefs.NEW_LIB
return GenericRefs.EXPORT_EQUAL
- sp_hal, sp_hal_dep, sp_hal_vndk_stable, sp_ndk, sp_ndk_vndk_stable = \
- gb.graph.compute_sp_lib(MockGenericRefs())
+ sp_lib = gb.graph.compute_sp_lib(MockGenericRefs())
- self.assertEqual(2 * 1, len(sp_hal))
- self.assertEqual(2 * 2, len(sp_hal_dep))
- self.assertEqual(2 * 2, len(sp_hal_vndk_stable))
- self.assertEqual(2 * 1, len(sp_ndk))
- self.assertEqual(2 * 3, len(sp_ndk_vndk_stable))
+ self.assertEqual(2 * 1, len(sp_lib.sp_hal))
+ self.assertEqual(2 * 2, len(sp_lib.sp_hal_dep))
+ self.assertEqual(2 * 2, len(sp_lib.sp_hal_vndk_stable))
+ self.assertEqual(2 * 1, len(sp_lib.sp_ndk))
+ self.assertEqual(2 * 3, len(sp_lib.sp_ndk_vndk_stable))
- sp_hal = self._get_paths_from_nodes(sp_hal)
- sp_hal_dep = self._get_paths_from_nodes(sp_hal_dep)
- sp_hal_vndk_stable = self._get_paths_from_nodes(sp_hal_vndk_stable)
- sp_ndk = self._get_paths_from_nodes(sp_ndk)
- sp_ndk_vndk_stable = self._get_paths_from_nodes(sp_ndk_vndk_stable)
+ sp_hal = self._get_paths_from_nodes(sp_lib.sp_hal)
+ sp_hal_dep = self._get_paths_from_nodes(sp_lib.sp_hal_dep)
+ sp_hal_vndk_stable = self._get_paths_from_nodes(
+ sp_lib.sp_hal_vndk_stable)
+
+ sp_ndk = self._get_paths_from_nodes(sp_lib.sp_ndk)
+ sp_ndk_vndk_stable = self._get_paths_from_nodes(
+ sp_lib.sp_ndk_vndk_stable)
for lib_dir in ('lib', 'lib64'):
# SP-NDK dependencies
diff --git a/vndk/tools/definition-tool/vndk_definition_tool.py b/vndk/tools/definition-tool/vndk_definition_tool.py
index c93faa7..bb30910 100755
--- a/vndk/tools/definition-tool/vndk_definition_tool.py
+++ b/vndk/tools/definition-tool/vndk_definition_tool.py
@@ -624,6 +624,26 @@
'extra_vendor_libs vndk_core vndk_indirect vndk_fwk_ext vndk_vnd_ext')
+SPLibResult = collections.namedtuple(
+ 'SPLibResult',
+ 'sp_hal sp_hal_dep sp_hal_vndk_stable sp_ndk sp_ndk_vndk_stable')
+
+def print_sp_lib(sp_lib, file=sys.stdout):
+ # SP-NDK
+ for lib in sorted_lib_path_list(sp_lib.sp_ndk):
+ print('sp-ndk:', lib, file=file)
+ for lib in sorted_lib_path_list(sp_lib.sp_ndk_vndk_stable):
+ print('sp-ndk-vndk-stable:', lib, file=file)
+
+ # SP-HAL
+ for lib in sorted_lib_path_list(sp_lib.sp_hal):
+ print('sp-hal:', lib, file=file)
+ for lib in sorted_lib_path_list(sp_lib.sp_hal_dep):
+ print('sp-hal-dep:', lib, file=file)
+ for lib in sorted_lib_path_list(sp_lib.sp_hal_vndk_stable):
+ print('sp-hal-vndk-stable:', lib, file=file)
+
+
class ELFResolver(object):
def __init__(self, lib_set, default_search_path):
self.lib_set = lib_set
@@ -1017,8 +1037,8 @@
sp_ndk_vndk_stable = sp_ndk_closure - sp_ndk
sp_hal_vndk_stable = sp_hal_vndk_stable - sp_ndk - sp_ndk_vndk_stable
- return (sp_hal, sp_hal_dep, sp_hal_vndk_stable, sp_ndk, \
- sp_ndk_vndk_stable)
+ return SPLibResult(sp_hal, sp_hal_dep, sp_hal_vndk_stable, sp_ndk,
+ sp_ndk_vndk_stable)
def _po_component_sorted(self, lib_set, get_successors,
get_strong_successors):
@@ -1801,16 +1821,15 @@
self._warn_banned_vendor_lib_deps(graph, banned_libs)
# Compute sp-hal and vndk-stable.
- sp_hal, sp_hal_dep, sp_hal_vndk_stable, sp_ndk, sp_ndk_vndk_stable = \
- graph.compute_sp_lib(generic_refs)
+ sp_lib = graph.compute_sp_lib(generic_refs)
- vndk_stable = sp_hal_vndk_stable | sp_ndk_vndk_stable
- sp_hal_closure = sp_hal | sp_hal_dep
+ vndk_stable = sp_lib.sp_hal_vndk_stable | sp_lib.sp_ndk_vndk_stable
+ sp_hal_closure = sp_lib.sp_hal | sp_lib.sp_hal_dep
# Normalize partition tags. We expect many violations from the
# pre-Treble world. Guess a resolution for the incorrect partition
# tag.
- graph.normalize_partition_tags(sp_hal, generic_refs)
+ graph.normalize_partition_tags(sp_lib.sp_hal, generic_refs)
# User may specify the partition for outward-customized vndk libs. The
# following code converts the path into ELFLinkData.
@@ -1844,19 +1863,8 @@
(vndk.vndk_core, vndk.vndk_indirect, vndk.vndk_fwk_ext,
vndk.vndk_vnd_ext))
- # SP-NDK
- for lib in sorted_lib_path_list(sp_ndk):
- print('sp-ndk:', lib)
- for lib in sorted_lib_path_list(sp_ndk_vndk_stable):
- print('sp-ndk-vndk-stable:', lib)
-
- # SP-HAL
- for lib in sorted_lib_path_list(sp_hal):
- print('sp-hal:', lib)
- for lib in sorted_lib_path_list(sp_hal_dep):
- print('sp-hal-dep:', lib)
- for lib in sorted_lib_path_list(sp_hal_vndk_stable):
- print('sp-hal-vndk-stable:', lib)
+ # SP-NDK and SP-HAL
+ print_sp_lib(sp_lib)
# VNDK (framework)
for lib in sorted_lib_path_list(vndk.vndk_core):
@@ -2043,23 +2051,7 @@
args.vendor, args.vendor_dir_as_system,
args.load_extra_deps)
- sp_hal, sp_hal_dep, sp_hal_vndk_stable, sp_ndk, sp_ndk_vndk_stable = \
- graph.compute_sp_lib(generic_refs)
-
- # SP-NDK
- for lib in sorted_lib_path_list(sp_ndk):
- print('sp-ndk:', lib)
- for lib in sorted_lib_path_list(sp_ndk_vndk_stable):
- print('sp-ndk-vndk-stable:', lib)
-
- # SP-HAL
- for lib in sorted_lib_path_list(sp_hal):
- print('sp-hal:', lib)
- for lib in sorted_lib_path_list(sp_hal_dep):
- print('sp-hal-dep:', lib)
- for lib in sorted_lib_path_list(sp_hal_vndk_stable):
- print('sp-hal-vndk-stable:', lib)
-
+ print_sp_lib(graph.compute_sp_lib(generic_refs))
return 0