Generate dumps for non-VNDK into folder that matches Cross-Version ABI Check mechanism
The dumps of non-VNDK was generated to PLATFORM_SDK_VERSION. To enable
the Cross-Version ABI Check, before finalization (when
PLATFORM_VERSION_CODENAME is not REL), dumps should be generate to
current/ no matter what PLATFORM_SDK_VERSION is; After finalization,
dumps should be generate to PLATFORM_SDK_VERSION/.
Test: $ANDROID_BUILD_TOP/development/vndk/tools/header-checker/utils/create_reference_dumps.py \
--llndk -l libvndksupport -l libbinder_ndk -l libprocinfo
Bug: 238573414
Change-Id: I198bf3e1fb1382a9378dcde16deb9262f0eb9f64
This commit is contained in:
@@ -39,9 +39,9 @@ def make_libs_for_product(libs, product, variant, vndk_version, targets):
|
||||
|
||||
|
||||
def get_ref_dump_dir_stem(ref_dump_dir, category, chosen_vndk_version,
|
||||
binder_bitness, arch):
|
||||
return os.path.join(ref_dump_dir, category, chosen_vndk_version,
|
||||
binder_bitness, arch)
|
||||
chosen_platform_version, binder_bitness, arch):
|
||||
version = chosen_vndk_version if category == 'vndk' else chosen_platform_version
|
||||
return os.path.join(ref_dump_dir, category, version, binder_bitness, arch)
|
||||
|
||||
|
||||
def find_and_remove_path(root_path, file_name=None):
|
||||
@@ -57,12 +57,13 @@ def find_and_remove_path(root_path, file_name=None):
|
||||
|
||||
|
||||
def remove_references_for_all_arches(ref_dump_dir, chosen_vndk_version,
|
||||
binder_bitness, targets, libs):
|
||||
chosen_platform_version, binder_bitness,
|
||||
targets, libs):
|
||||
for target in targets:
|
||||
for category in ('ndk', 'platform', 'vndk'):
|
||||
dir_to_remove = get_ref_dump_dir_stem(
|
||||
ref_dump_dir, category, chosen_vndk_version, binder_bitness,
|
||||
target.get_arch_str())
|
||||
ref_dump_dir, category, chosen_vndk_version, chosen_platform_version,
|
||||
binder_bitness, target.get_arch_str())
|
||||
if libs:
|
||||
for lib in libs:
|
||||
find_and_remove_path(dir_to_remove,
|
||||
@@ -83,7 +84,7 @@ def tag_to_dir_name(tag):
|
||||
raise ValueError(tag + 'is not a known tag.')
|
||||
|
||||
|
||||
def find_and_copy_lib_lsdumps(ref_dump_dir, chosen_vndk_version,
|
||||
def find_and_copy_lib_lsdumps(ref_dump_dir, chosen_vndk_version, chosen_platform_version,
|
||||
binder_bitness, target, libs, lsdump_paths,
|
||||
compress):
|
||||
arch_lsdump_paths = find_lib_lsdumps(lsdump_paths, libs, target)
|
||||
@@ -91,7 +92,7 @@ def find_and_copy_lib_lsdumps(ref_dump_dir, chosen_vndk_version,
|
||||
num_created = 0
|
||||
for tag, path in arch_lsdump_paths:
|
||||
ref_dump_dir_stem = get_ref_dump_dir_stem(
|
||||
ref_dump_dir, tag_to_dir_name(tag), chosen_vndk_version,
|
||||
ref_dump_dir, tag_to_dir_name(tag), chosen_vndk_version, chosen_platform_version,
|
||||
binder_bitness, target.get_arch_str())
|
||||
copy_reference_dump(
|
||||
path, os.path.join(ref_dump_dir_stem, 'source-based'), compress)
|
||||
@@ -99,7 +100,7 @@ def find_and_copy_lib_lsdumps(ref_dump_dir, chosen_vndk_version,
|
||||
return num_created
|
||||
|
||||
|
||||
def create_source_abi_reference_dumps(args, chosen_vndk_version,
|
||||
def create_source_abi_reference_dumps(args, chosen_vndk_version, chosen_platform_version,
|
||||
binder_bitness, lsdump_paths, targets):
|
||||
num_libs_copied = 0
|
||||
for target in targets:
|
||||
@@ -108,8 +109,8 @@ def create_source_abi_reference_dumps(args, chosen_vndk_version,
|
||||
f'primary arch: {target.primary_arch}')
|
||||
|
||||
num_libs_copied += find_and_copy_lib_lsdumps(
|
||||
args.ref_dump_dir, chosen_vndk_version, binder_bitness, target,
|
||||
args.libs, lsdump_paths, args.compress)
|
||||
args.ref_dump_dir, chosen_vndk_version, chosen_platform_version, binder_bitness,
|
||||
target, args.libs, lsdump_paths, args.compress)
|
||||
return num_libs_copied
|
||||
|
||||
|
||||
@@ -120,11 +121,14 @@ def create_source_abi_reference_dumps_for_all_products(args):
|
||||
|
||||
for product in args.products:
|
||||
build_vars = get_build_vars_for_product(
|
||||
['PLATFORM_VNDK_VERSION', 'BOARD_VNDK_VERSION', 'BINDER32BIT'],
|
||||
['PLATFORM_VNDK_VERSION', 'BOARD_VNDK_VERSION', 'BINDER32BIT',
|
||||
'PLATFORM_VERSION_CODENAME', 'PLATFORM_SDK_VERSION'],
|
||||
product, args.build_variant)
|
||||
|
||||
platform_vndk_version = build_vars[0]
|
||||
board_vndk_version = build_vars[1]
|
||||
platform_version_codename = build_vars[3]
|
||||
platform_sdk_version = build_vars[4]
|
||||
if build_vars[2] == 'true':
|
||||
binder_bitness = '32'
|
||||
else:
|
||||
@@ -132,6 +136,11 @@ def create_source_abi_reference_dumps_for_all_products(args):
|
||||
|
||||
chosen_vndk_version = choose_vndk_version(
|
||||
args.version, platform_vndk_version, board_vndk_version)
|
||||
# chosen_vndk_version is expected to be the finalized PLATFORM_SDK_VERSION
|
||||
# if the codename is REL.
|
||||
chosen_platform_version = (platform_sdk_version
|
||||
if platform_version_codename == 'REL'
|
||||
else 'current')
|
||||
|
||||
targets = [t for t in (Target(True, product), Target(False, product))
|
||||
if t.arch]
|
||||
@@ -139,8 +148,8 @@ def create_source_abi_reference_dumps_for_all_products(args):
|
||||
# them if none of them are specified) so that we may build these
|
||||
# libraries successfully.
|
||||
remove_references_for_all_arches(
|
||||
args.ref_dump_dir, chosen_vndk_version, binder_bitness, targets,
|
||||
args.libs)
|
||||
args.ref_dump_dir, chosen_vndk_version, chosen_platform_version, binder_bitness,
|
||||
targets, args.libs)
|
||||
|
||||
if not args.no_make_lib:
|
||||
# Build all the specified libs, or build `findlsdumps` if no libs
|
||||
@@ -153,7 +162,8 @@ def create_source_abi_reference_dumps_for_all_products(args):
|
||||
build=False)
|
||||
|
||||
num_processed += create_source_abi_reference_dumps(
|
||||
args, chosen_vndk_version, binder_bitness, lsdump_paths, targets)
|
||||
args, chosen_vndk_version, chosen_platform_version, binder_bitness, lsdump_paths,
|
||||
targets)
|
||||
|
||||
return num_processed
|
||||
|
||||
|
||||
Reference in New Issue
Block a user