diff options
author | Logan Chien <loganchien@google.com> | 2017-06-09 19:46:52 +0800 |
---|---|---|
committer | Logan Chien <loganchien@google.com> | 2017-06-10 01:01:43 +0800 |
commit | 08d4dc40b627e06d032f696fa037e767e1ff777a (patch) | |
tree | dd95d7c44224a24123e2a9104b95cdfc5a332679 | |
parent | 7f127196dcd51cb1140e760a9d76c0864a254bb0 (diff) | |
download | android_development-08d4dc40b627e06d032f696fa037e767e1ff777a.tar.gz android_development-08d4dc40b627e06d032f696fa037e767e1ff777a.tar.bz2 android_development-08d4dc40b627e06d032f696fa037e767e1ff777a.zip |
vndk-def: Add tag file support to deps-insight
This commit generalizes tag file support so that deps-insight won't
follow the dependencies to ineligible vndk-sp/vndk libs.
Bug: 37867089
Test: libandroid.so will not be tagged as vndk in the html output of
deps-insight tool.
Merged-In: I5482a45acf4232ae7fac1210043ca868b28211ff
(cherry picked from commit 7a8bc4db10e9a6a230921df70028e1ee8cea7cf2)
Change-Id: I282c78274d520d150cf8b8684ccd729b2a499273
-rwxr-xr-x | vndk/tools/definition-tool/vndk_definition_tool.py | 53 |
1 files changed, 26 insertions, 27 deletions
diff --git a/vndk/tools/definition-tool/vndk_definition_tool.py b/vndk/tools/definition-tool/vndk_definition_tool.py index c06724ca3..3830025f3 100755 --- a/vndk/tools/definition-tool/vndk_definition_tool.py +++ b/vndk/tools/definition-tool/vndk_definition_tool.py @@ -1283,8 +1283,7 @@ class ELFLinker(object): raise ValueError('unknown action \"{}\"'.format(flag)) return (follow, warn) - def compute_degenerated_vndk(self, sp_lib, generic_refs, - tagged_paths=None, + def compute_degenerated_vndk(self, generic_refs, tagged_paths=None, action_ineligible_vndk_sp='warn', action_ineligible_vndk='warn'): # Find LL-NDK and SP-NDK libs. @@ -1862,6 +1861,18 @@ class VNDKCommandBase(ELFGraphCommand): parser.add_argument('--no-default-dlopen-deps', action='store_true', help='do not add default dlopen dependencies') + parser.add_argument('--tag-file', help='lib tag file') + + parser.add_argument( + '--action-ineligible-vndk-sp', default='warn', + help='action when a sp-hal uses non-vndk-sp libs ' + '(option: follow,warn,ignore)') + + parser.add_argument( + '--action-ineligible-vndk', default='warn', + help='action when a vendor lib/exe uses fwk-only libs ' + '(option: follow,warn,ignore)') + def create_from_args(self, args): """Create all essential data structures for VNDK computation.""" @@ -1874,7 +1885,12 @@ class VNDKCommandBase(ELFGraphCommand): 'minimum_dlopen_deps.txt') graph.load_extra_deps(minimum_dlopen_deps) - return (generic_refs, graph) + if args.tag_file: + tagged_paths = TaggedPathDict.create_from_csv_path(args.tag_file) + else: + tagged_paths = None + + return (generic_refs, graph, tagged_paths) class VNDKCommand(VNDKCommandBase): @@ -1893,18 +1909,6 @@ class VNDKCommand(VNDKCommandBase): '--full', action='store_true', help='print all classification') - parser.add_argument('--tag-file', help='lib tag file') - - parser.add_argument( - '--action-ineligible-vndk-sp', default='warn', - help='action when a sp-hal uses non-vndk-sp libs ' - '(option: follow,warn,ignore)') - - parser.add_argument( - '--action-ineligible-vndk', default='warn', - help='action when a vendor lib/exe uses fwk-only libs ' - '(option: follow,warn,ignore)') - parser.add_argument( '--output-format', default='tag', help='output format for vndk classification') @@ -2001,7 +2005,7 @@ class VNDKCommand(VNDKCommandBase): file.write(template) def main(self, args): - generic_refs, graph = self.create_from_args(args) + generic_refs, graph, tagged_paths = self.create_from_args(args) # Check the API extensions to NDK libraries. if generic_refs: @@ -2010,16 +2014,10 @@ class VNDKCommand(VNDKCommandBase): if args.warn_incorrect_partition: self._warn_incorrect_partition(graph) - if args.tag_file: - tagged_paths = TaggedPathDict.create_from_csv_path(args.tag_file) - else: - tagged_paths = None - # Compute vndk heuristics. - sp_lib = graph.compute_sp_lib(generic_refs) vndk_lib = graph.compute_degenerated_vndk( - sp_lib, generic_refs, tagged_paths, - args.action_ineligible_vndk_sp, args.action_ineligible_vndk) + generic_refs, tagged_paths, args.action_ineligible_vndk_sp, + args.action_ineligible_vndk) # Print results. if args.output_format == 'make': @@ -2042,11 +2040,12 @@ class DepsInsightCommand(VNDKCommandBase): '--output', '-o', help='output directory') def main(self, args): - generic_refs, graph = self.create_from_args(args) + generic_refs, graph, tagged_paths = self.create_from_args(args) # Compute vndk heuristics. - sp_lib = graph.compute_sp_lib(generic_refs) - vndk_lib = graph.compute_degenerated_vndk(sp_lib, generic_refs) + vndk_lib = graph.compute_degenerated_vndk( + generic_refs, tagged_paths, args.action_ineligible_vndk_sp, + args.action_ineligible_vndk) # Serialize data. strs = [] |