vndk-def: Exclude vndk-sp/vndk from ndk-indirect
This commit excludes VNDK-SP and VNDK libs from LL-NDK-INDIRECT and SP-NDK-INDIRECT libs because in the degenerated VNDK design, FWK-ONLY libs and VNDK libs share the same file. Bug: 37867089 Test: All eligible VNDK libs are not tagged with LL-NDK-Indirect and SP-NDK-Indirect with sailfish image. Change-Id: I05b20e9d21543d63c1e75896f20e49c3dc0d70de
This commit is contained in:
@@ -1282,21 +1282,8 @@ class ELFLinker(object):
|
|||||||
action_ineligible_vndk='follow,warn'):
|
action_ineligible_vndk='follow,warn'):
|
||||||
# Find LL-NDK and SP-NDK libs.
|
# Find LL-NDK and SP-NDK libs.
|
||||||
ll_ndk = set(lib for lib in self.all_libs() if lib.is_ll_ndk)
|
ll_ndk = set(lib for lib in self.all_libs() if lib.is_ll_ndk)
|
||||||
|
|
||||||
def is_not_ll_ndk_indirect(lib):
|
|
||||||
return lib.is_ll_ndk
|
|
||||||
|
|
||||||
ll_ndk_indirect = self.compute_closure(ll_ndk, is_not_ll_ndk_indirect)
|
|
||||||
ll_ndk_indirect -= ll_ndk
|
|
||||||
|
|
||||||
sp_ndk = set(lib for lib in self.all_libs() if lib.is_sp_ndk)
|
sp_ndk = set(lib for lib in self.all_libs() if lib.is_sp_ndk)
|
||||||
|
|
||||||
def is_not_sp_ndk_indirect(lib):
|
|
||||||
return lib.is_ll_ndk or lib.is_sp_ndk or lib in ll_ndk_indirect
|
|
||||||
|
|
||||||
sp_ndk_indirect = self.compute_closure(sp_ndk, is_not_sp_ndk_indirect)
|
|
||||||
sp_ndk_indirect -= sp_ndk
|
|
||||||
|
|
||||||
# Find SP-HAL libs.
|
# Find SP-HAL libs.
|
||||||
sp_hal = self.compute_predefined_sp_hal()
|
sp_hal = self.compute_predefined_sp_hal()
|
||||||
|
|
||||||
@@ -1383,6 +1370,12 @@ class ELFLinker(object):
|
|||||||
extra_vndk_sp_indirect = vndk_sp - predefined_vndk_sp - \
|
extra_vndk_sp_indirect = vndk_sp - predefined_vndk_sp - \
|
||||||
predefined_vndk_sp_indirect
|
predefined_vndk_sp_indirect
|
||||||
|
|
||||||
|
def is_vndk_sp(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
|
||||||
|
|
||||||
# Find VNDK libs (a.k.a. system shared libs directly used by vendor
|
# Find VNDK libs (a.k.a. system shared libs directly used by vendor
|
||||||
# partition.)
|
# partition.)
|
||||||
def is_not_vndk(lib):
|
def is_not_vndk(lib):
|
||||||
@@ -1417,6 +1410,9 @@ class ELFLinker(object):
|
|||||||
vndk_indirect = self.compute_closure(vndk, is_not_vndk)
|
vndk_indirect = self.compute_closure(vndk, is_not_vndk)
|
||||||
vndk_indirect -= vndk
|
vndk_indirect -= vndk
|
||||||
|
|
||||||
|
def is_vndk(lib):
|
||||||
|
return lib in vndk or lib in vndk_indirect
|
||||||
|
|
||||||
# Compute the extended usages from vendor partition.
|
# Compute the extended usages from vendor partition.
|
||||||
# FIXME: DAUX libraries won't be found by the following algorithm.
|
# FIXME: DAUX libraries won't be found by the following algorithm.
|
||||||
vndk_ext = set()
|
vndk_ext = set()
|
||||||
@@ -1435,6 +1431,21 @@ class ELFLinker(object):
|
|||||||
vndk_ext |= candidates
|
vndk_ext |= candidates
|
||||||
candidates = collect_vndk_ext(candidates)
|
candidates = collect_vndk_ext(candidates)
|
||||||
|
|
||||||
|
# Compute LL-NDK-Indirect and SP-NDK-Indirect.
|
||||||
|
def is_not_ll_ndk_indirect(lib):
|
||||||
|
return lib.is_ll_ndk or is_vndk_sp(lib) or is_vndk(lib)
|
||||||
|
|
||||||
|
ll_ndk_indirect = self.compute_closure(ll_ndk, is_not_ll_ndk_indirect)
|
||||||
|
ll_ndk_indirect -= ll_ndk
|
||||||
|
|
||||||
|
def is_not_sp_ndk_indirect(lib):
|
||||||
|
return lib.is_ll_ndk or lib.is_sp_ndk or lib in ll_ndk_indirect or \
|
||||||
|
is_vndk_sp(lib) or is_vndk(lib)
|
||||||
|
|
||||||
|
sp_ndk_indirect = self.compute_closure(sp_ndk, is_not_sp_ndk_indirect)
|
||||||
|
sp_ndk_indirect -= sp_ndk
|
||||||
|
|
||||||
|
# Return the VNDK classifications.
|
||||||
return VNDKResult(
|
return VNDKResult(
|
||||||
ll_ndk=ll_ndk,
|
ll_ndk=ll_ndk,
|
||||||
ll_ndk_indirect=ll_ndk_indirect,
|
ll_ndk_indirect=ll_ndk_indirect,
|
||||||
|
|||||||
Reference in New Issue
Block a user