vndk-def: Remove more unused code
This commit removes BannedLibDict and compute_vndk_cap() from the VNDK
definition tool.
Test: ./tests/run.py
Change-Id: I6098b6247c9b0a44accf54cd9fc90b60e28085bb
diff --git a/vndk/tools/definition-tool/tests/test_banned_libs.py b/vndk/tools/definition-tool/tests/test_banned_libs.py
deleted file mode 100755
index 6c7dd53..0000000
--- a/vndk/tools/definition-tool/tests/test_banned_libs.py
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/env python3
-
-from __future__ import print_function
-
-import os
-import sys
-sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
-
-import unittest
-
-from vndk_definition_tool import BA_WARN, BannedLibDict
-
-
-class BannedLibDictTest(unittest.TestCase):
- def test_add(self):
- d = BannedLibDict()
- d.add('libfoo.so', 'test', BA_WARN)
- x = d.get('libfoo.so')
-
- self.assertIsNotNone(x)
- self.assertEqual('libfoo.so', x.name)
- self.assertEqual('test', x.reason)
- self.assertEqual(BA_WARN, x.action)
-
- def test_get(self):
- d = BannedLibDict.create_default()
- self.assertIsNotNone(d.get('libbinder.so'))
- self.assertIsNotNone(d.get('libselinux.so'))
- self.assertIsNone(d.get('libc.so'))
-
- def test_is_banned(self):
- d = BannedLibDict.create_default()
- self.assertTrue(d.is_banned('/system/lib/libbinder.so'))
- self.assertTrue(d.is_banned('/system/lib/libselinux.so'))
- self.assertTrue(d.is_banned('/system/lib64/libbinder.so'))
- self.assertTrue(d.is_banned('/system/lib64/libselinux.so'))
- self.assertFalse(d.is_banned('/system/lib64/libc.so'))
-
-
-if __name__ == '__main__':
- unittest.main()
-
diff --git a/vndk/tools/definition-tool/tests/test_elf_linker.py b/vndk/tools/definition-tool/tests/test_elf_linker.py
index d3eecdd..6faa9d2 100755
--- a/vndk/tools/definition-tool/tests/test_elf_linker.py
+++ b/vndk/tools/definition-tool/tests/test_elf_linker.py
@@ -9,8 +9,8 @@
import unittest
from compat import StringIO
-from vndk_definition_tool import (BannedLibDict, ELF, ELFLinker, GenericRefs,
- PT_SYSTEM, PT_VENDOR)
+from vndk_definition_tool import (ELF, ELFLinker, GenericRefs, PT_SYSTEM,
+ PT_VENDOR)
class GraphBuilder(object):
@@ -520,89 +520,5 @@
self.assertNotIn(libc_path, sp_ndk_indirect)
- def test_compute_vndk_cap(self):
- gb = GraphBuilder()
-
- # Add LL-NDK libraries.
- gb.add_multilib(PT_SYSTEM, 'libc')
- gb.add_multilib(PT_SYSTEM, 'libdl')
- gb.add_multilib(PT_SYSTEM, 'liblog')
- gb.add_multilib(PT_SYSTEM, 'libm')
- gb.add_multilib(PT_SYSTEM, 'libstdc++')
-
- # Add SP-NDK libraries.
- gb.add_multilib(PT_SYSTEM, 'libEGL')
- gb.add_multilib(PT_SYSTEM, 'libGLES_v2')
-
- # Add banned libraries.
- gb.add_multilib(PT_SYSTEM, 'libbinder')
- gb.add_multilib(PT_SYSTEM, 'libselinux')
-
- # Add good examples.
- gb.add_multilib(PT_SYSTEM, 'libgood_a', dt_needed=['libc.so'])
- gb.add_multilib(PT_SYSTEM, 'libgood_b', dt_needed=['libEGL.so'])
- gb.add_multilib(PT_SYSTEM, 'libgood_c', dt_needed=['libGLES_v2.so'])
-
- # Add bad examples.
- gb.add_multilib(PT_SYSTEM, 'libbad_a', dt_needed=['libbinder.so'])
- gb.add_multilib(PT_SYSTEM, 'libbad_b', dt_needed=['libselinux.so'])
- gb.add_multilib(PT_SYSTEM, 'libbad_c', dt_needed=['libbad_a.so'])
- gb.add_multilib(PT_SYSTEM, 'libbad_d', dt_needed=['libbad_c.so'])
- gb.add_multilib(PT_VENDOR, 'libbad_e', dt_needed=['libc.so'])
-
- gb.resolve()
-
- # Compute VNDK cap.
- banned_libs = BannedLibDict.create_default()
- vndk_cap = gb.graph.compute_vndk_cap(banned_libs)
- vndk_cap = set(lib.path for lib in vndk_cap)
-
- # Check the existence of good examples.
- self.assertIn('/system/lib/libgood_a.so', vndk_cap)
- self.assertIn('/system/lib/libgood_b.so', vndk_cap)
- self.assertIn('/system/lib/libgood_c.so', vndk_cap)
-
- self.assertIn('/system/lib64/libgood_a.so', vndk_cap)
- self.assertIn('/system/lib64/libgood_b.so', vndk_cap)
- self.assertIn('/system/lib64/libgood_c.so', vndk_cap)
-
- # Check the absence of bad examples.
- self.assertNotIn('/system/lib/libbad_a.so', vndk_cap)
- self.assertNotIn('/system/lib/libbad_b.so', vndk_cap)
- self.assertNotIn('/system/lib/libbad_c.so', vndk_cap)
- self.assertNotIn('/system/lib/libbad_d.so', vndk_cap)
- self.assertNotIn('/vendor/lib/libbad_e.so', vndk_cap)
-
- self.assertNotIn('/system/lib64/libbad_a.so', vndk_cap)
- self.assertNotIn('/system/lib64/libbad_b.so', vndk_cap)
- self.assertNotIn('/system/lib64/libbad_c.so', vndk_cap)
- self.assertNotIn('/system/lib64/libbad_d.so', vndk_cap)
- self.assertNotIn('/vendor/lib64/libbad_e.so', vndk_cap)
-
- # Check the absence of banned libraries.
- self.assertNotIn('/system/lib/libbinder.so', vndk_cap)
- self.assertNotIn('/system/lib/libselinux.so', vndk_cap)
-
- self.assertNotIn('/system/lib64/libbinder.so', vndk_cap)
- self.assertNotIn('/system/lib64/libselinux.so', vndk_cap)
-
- # Check the absence of NDK libraries. Although LL-NDK and SP-NDK
- # libraries are not banned, they are not VNDK libraries either.
- self.assertNotIn('/system/lib/libEGL.so', vndk_cap)
- self.assertNotIn('/system/lib/libOpenGLES_v2.so', vndk_cap)
- self.assertNotIn('/system/lib/libc.so', vndk_cap)
- self.assertNotIn('/system/lib/libdl.so', vndk_cap)
- self.assertNotIn('/system/lib/liblog.so', vndk_cap)
- self.assertNotIn('/system/lib/libm.so', vndk_cap)
- self.assertNotIn('/system/lib/libstdc++.so', vndk_cap)
-
- self.assertNotIn('/system/lib64/libEGL.so', vndk_cap)
- self.assertNotIn('/system/lib64/libOpenGLES_v2.so', vndk_cap)
- self.assertNotIn('/system/lib64/libc.so', vndk_cap)
- self.assertNotIn('/system/lib64/libdl.so', vndk_cap)
- self.assertNotIn('/system/lib64/liblog.so', vndk_cap)
- self.assertNotIn('/system/lib64/libm.so', vndk_cap)
- self.assertNotIn('/system/lib64/libstdc++.so', vndk_cap)
-
if __name__ == '__main__':
unittest.main()
diff --git a/vndk/tools/definition-tool/vndk_definition_tool.py b/vndk/tools/definition-tool/vndk_definition_tool.py
index b2ea0af..4dc2399 100755
--- a/vndk/tools/definition-tool/vndk_definition_tool.py
+++ b/vndk/tools/definition-tool/vndk_definition_tool.py
@@ -526,7 +526,7 @@
#------------------------------------------------------------------------------
-# NDK and Banned Libraries
+# NDK
#------------------------------------------------------------------------------
class NDKLibDict(object):
@@ -609,33 +609,6 @@
NDK_LIBS = NDKLibDict()
-BannedLib = collections.namedtuple(
- 'BannedLib', ('name', 'reason', 'action',))
-
-BA_WARN = 0
-BA_EXCLUDE = 1
-
-class BannedLibDict(object):
- def __init__(self):
- self.banned_libs = dict()
-
- def add(self, name, reason, action):
- self.banned_libs[name] = BannedLib(name, reason, action)
-
- def get(self, name):
- return self.banned_libs.get(name)
-
- def is_banned(self, path):
- return self.get(os.path.basename(path))
-
- @staticmethod
- def create_default():
- d = BannedLibDict()
- d.add('libbinder.so', 'un-versioned IPC', BA_WARN)
- d.add('libselinux.so', 'policydb might be incompatible', BA_WARN)
- return d
-
-
#------------------------------------------------------------------------------
# ELF Linker
#------------------------------------------------------------------------------
@@ -1534,43 +1507,6 @@
vndk_sp_indirect_ext=vndk_sp_indirect_ext,
extra_vendor_libs=extra_vendor_libs)
- def compute_vndk_cap(self, banned_libs):
- # ELF files on vendor partitions are banned unconditionally. ELF files
- # on the system partition are banned if their file extensions are not
- # '.so' or their file names are listed in banned_libs. LL-NDK and
- # SP-NDK libraries are treated as a special case which will not be
- # considered as banned libraries at the moment.
- def is_banned(lib):
- if lib.is_ndk:
- return lib.is_hl_ndk
- return (banned_libs.is_banned(lib.path) or
- not lib.is_system_lib() or
- not lib.path.endswith('.so'))
-
- # Find all libraries that are banned.
- banned_set = set()
- for lib_set in self.lib_pt:
- for lib in lib_set.values():
- if is_banned(lib):
- banned_set.add(lib)
-
- # Find the transitive closure of the banned libraries.
- stack = list(banned_set)
- while stack:
- lib = stack.pop()
- for user in lib.users:
- if not user.is_ndk and user not in banned_set:
- banned_set.add(user)
- stack.append(user)
-
- # Find the non-NDK non-banned libraries.
- vndk_cap = set()
- for lib in self.lib_pt[PT_SYSTEM].values():
- if not lib.is_ndk and lib not in banned_set:
- vndk_cap.add(lib)
-
- return vndk_cap
-
@staticmethod
def _compute_closure(root_set, is_excluded, get_successors):
closure = set(root_set)