vndk-def: Load LL-NDK and SP-NDK names
This commit loads LL-NDK and SP-NDK lib names from a file instead of
hard-coding them in the program.
Test: ./tests/run.py
Change-Id: Ia158f9d74fc22b4119f6f967e4d498e849eadf9e
diff --git a/vndk/tools/definition-tool/datasets/minimum_tag_file.csv b/vndk/tools/definition-tool/datasets/minimum_tag_file.csv
new file mode 100644
index 0000000..865013d
--- /dev/null
+++ b/vndk/tools/definition-tool/datasets/minimum_tag_file.csv
@@ -0,0 +1,40 @@
+Path,Tag
+/system/${LIB}/libEGL.so,SP-NDK
+/system/${LIB}/libGLESv1_CM.so,SP-NDK
+/system/${LIB}/libGLESv2.so,SP-NDK
+/system/${LIB}/libGLESv3.so,SP-NDK
+/system/${LIB}/libandroid_net.so,LL-NDK
+/system/${LIB}/libc.so,LL-NDK
+/system/${LIB}/libdl.so,LL-NDK
+/system/${LIB}/liblog.so,LL-NDK
+/system/${LIB}/libm.so,LL-NDK
+/system/${LIB}/libnativewindow.so,SP-NDK
+/system/${LIB}/libstdc++.so,LL-NDK
+/system/${LIB}/libsync.so,SP-NDK
+/system/${LIB}/libvndksupport.so,LL-NDK
+/system/${LIB}/libvulkan.so,SP-NDK
+/system/${LIB}/libz.so,LL-NDK
+/system/${LIB}/vndk-sp/android.hardware.graphics.allocator@2.0.so,VNDK-SP
+/system/${LIB}/vndk-sp/android.hardware.graphics.common@1.0.so,VNDK-SP
+/system/${LIB}/vndk-sp/android.hardware.graphics.mapper@2.0.so,VNDK-SP
+/system/${LIB}/vndk-sp/android.hardware.renderscript@1.0.so,VNDK-SP
+/system/${LIB}/vndk-sp/android.hidl.base@1.0.so,VNDK-SP
+/system/${LIB}/vndk-sp/android.hidl.memory@1.0.so,VNDK-SP
+/system/${LIB}/vndk-sp/libRSCpuRef.so,VNDK-SP
+/system/${LIB}/vndk-sp/libRSDriver.so,VNDK-SP
+/system/${LIB}/vndk-sp/libRS_internal.so,VNDK-SP
+/system/${LIB}/vndk-sp/libbacktrace.so,VNDK-SP-Indirect
+/system/${LIB}/vndk-sp/libbase.so,VNDK-SP
+/system/${LIB}/vndk-sp/libbcinfo.so,VNDK-SP
+/system/${LIB}/vndk-sp/libblas.so,VNDK-SP-Indirect-Private
+/system/${LIB}/vndk-sp/libc++.so,VNDK-SP
+/system/${LIB}/vndk-sp/libcutils.so,VNDK-SP
+/system/${LIB}/vndk-sp/libhardware.so,VNDK-SP
+/system/${LIB}/vndk-sp/libhidlbase.so,VNDK-SP
+/system/${LIB}/vndk-sp/libhidlmemory.so,VNDK-SP
+/system/${LIB}/vndk-sp/libhidltransport.so,VNDK-SP
+/system/${LIB}/vndk-sp/libhwbinder.so,VNDK-SP
+/system/${LIB}/vndk-sp/libion.so,VNDK-SP
+/system/${LIB}/vndk-sp/liblzma.so,VNDK-SP-Indirect
+/system/${LIB}/vndk-sp/libunwind.so,VNDK-SP-Indirect
+/system/${LIB}/vndk-sp/libutils.so,VNDK-SP
diff --git a/vndk/tools/definition-tool/vndk_definition_tool.py b/vndk/tools/definition-tool/vndk_definition_tool.py
index a9ae049..4f8528f 100755
--- a/vndk/tools/definition-tool/vndk_definition_tool.py
+++ b/vndk/tools/definition-tool/vndk_definition_tool.py
@@ -698,62 +698,26 @@
LL_NDK = 1
SP_NDK = 2
- LL_NDK_LIB_NAMES = (
- 'libc.so',
- 'libdl.so',
- 'liblog.so',
- 'libm.so',
- 'libstdc++.so',
- 'libvndksupport.so',
- 'libandroid_net.so',
- 'libz.so',
- )
-
- SP_NDK_LIB_NAMES = (
- 'libEGL.so',
- 'libGLESv1_CM.so',
- 'libGLESv2.so',
- 'libGLESv3.so',
- 'libnativewindow.so',
- 'libsync.so',
- 'libvulkan.so',
- )
-
- @staticmethod
- def _create_pattern(names):
- return '|'.join('(?:^\\/system\\/lib(?:64)?\\/' + re.escape(i) + '$)'
- for i in names)
-
- @staticmethod
- def _compile_path_matcher(names):
- return re.compile(NDKLibDict._create_pattern(names))
-
- @staticmethod
- def _compile_multi_path_matcher(name_lists):
- patt = '|'.join('(' + NDKLibDict._create_pattern(names) + ')'
- for names in name_lists)
- return re.compile(patt)
-
def __init__(self):
- self.ll_ndk_patterns = self._compile_path_matcher(self.LL_NDK_LIB_NAMES)
- self.sp_ndk_patterns = self._compile_path_matcher(self.SP_NDK_LIB_NAMES)
- self.ndk_patterns = self._compile_multi_path_matcher(
- (self.LL_NDK_LIB_NAMES, self.SP_NDK_LIB_NAMES))
+ script_dir = os.path.dirname(os.path.abspath(__file__))
+ self.tagged_paths = TaggedPathDict.create_from_csv_path(
+ os.path.join(script_dir, 'datasets', 'minimum_tag_file.csv'))
def is_ll_ndk(self, path):
- return self.ll_ndk_patterns.match(path)
+ return path in self.tagged_paths.ll_ndk
def is_sp_ndk(self, path):
- return self.sp_ndk_patterns.match(path)
+ return path in self.tagged_paths.sp_ndk
def is_ndk(self, path):
- return self.ndk_patterns.match(path)
+ return self.is_ll_ndk(path) or self.is_sp_ndk(path)
def classify(self, path):
- match = self.ndk_patterns.match(path)
- if not match:
- return 0
- return match.lastindex
+ if self.is_ll_ndk(path):
+ return NDKLibDict.LL_NDK
+ if self.is_sp_ndk(path):
+ return NDKLibDict.SP_NDK
+ return NDKLibDict.NOT_NDK
NDK_LIBS = NDKLibDict()