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