summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLogan Chien <loganchien@google.com>2017-06-09 04:02:50 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-06-09 04:02:50 +0000
commitd9407507536f49751af8c636f34fec174c45017d (patch)
treef0f19ecf0a7cab253711d12832e706fee23aa853
parent0b6ff4f26f536bde0e5698b374c286ca982a0d53 (diff)
parentc0e1c36f9ba6008e72820487bbde87708ad17048 (diff)
downloadandroid_development-d9407507536f49751af8c636f34fec174c45017d.tar.gz
android_development-d9407507536f49751af8c636f34fec174c45017d.tar.bz2
android_development-d9407507536f49751af8c636f34fec174c45017d.zip
vndk-def: Exclude vndk-sp from vndk
am: c0e1c36f9b Change-Id: I8dda11656de139e6418a3d550456ab8153ff7d7f
-rwxr-xr-xvndk/tools/definition-tool/vndk_definition_tool.py35
1 files changed, 30 insertions, 5 deletions
diff --git a/vndk/tools/definition-tool/vndk_definition_tool.py b/vndk/tools/definition-tool/vndk_definition_tool.py
index 82c770a2b..7ea7b4b92 100755
--- a/vndk/tools/definition-tool/vndk_definition_tool.py
+++ b/vndk/tools/definition-tool/vndk_definition_tool.py
@@ -1369,19 +1369,41 @@ class ELFLinker(object):
vndk_sp_ext, is_not_vndk_sp_indirect_ext)
vndk_sp_indirect_ext -= vndk_sp_ext
- extra_vndk_sp_indirect = vndk_sp - predefined_vndk_sp - \
+ vndk_sp_closure = vndk_sp | vndk_sp_indirect
+ extra_vndk_sp_indirect = vndk_sp_closure - predefined_vndk_sp - \
predefined_vndk_sp_indirect
- def is_vndk_sp(lib):
+ def is_vndk_sp_public(lib):
return lib in vndk_sp or lib in vndk_sp_unused or \
lib in vndk_sp_indirect or \
- lib in vndk_sp_indirect_unused or \
- lib in vndk_sp_indirect_private
+ lib in vndk_sp_indirect_unused
+
+ def is_vndk_sp(lib):
+ return is_vndk_sp_public(lib) or lib in vndk_sp_indirect_private
+
+ def is_vndk_sp_unused(lib):
+ return lib in vndk_sp_unused or lib in vndk_sp_indirect_unused
+
+ def relabel_vndk_sp_as_used(lib):
+ assert is_vndk_sp_unused(lib)
+
+ if lib in vndk_sp_unused:
+ vndk_sp_unused.remove(lib)
+ vndk_sp.add(lib)
+ else:
+ vndk_sp_indirect_unused.remove(lib)
+ vndk_sp_indirect.add(lib)
+
+ closure = self.compute_closure({lib}, is_not_vndk_sp_indirect)
+ closure -= vndk_sp
+ vndk_sp_indirect_unused.difference_update(closure)
+ vndk_sp_indirect.update(closure)
# Find VNDK libs (a.k.a. system shared libs directly used by vendor
# partition.)
def is_not_vndk(lib):
- if lib.is_ll_ndk or lib.is_sp_ndk or lib in vndk_sp:
+ if lib.is_ll_ndk or lib.is_sp_ndk or is_vndk_sp_public(lib) or \
+ lib in fwk_only_rs:
return True
if lib.partition != PT_SYSTEM:
return True
@@ -1396,6 +1418,9 @@ class ELFLinker(object):
vndk = set()
for lib in self.lib_pt[PT_VENDOR].values():
for dep in lib.deps:
+ if is_vndk_sp_unused(dep):
+ relabel_vndk_sp_as_used(dep)
+ continue
if is_not_vndk(dep):
continue
if not tagged_paths or \