From 04cf4d41e982a6a2cfed3c2b5c42b8b8563289ed Mon Sep 17 00:00:00 2001 From: Hsin-Yi Chen Date: Tue, 25 Jul 2023 16:48:19 +0800 Subject: [PATCH] Handle lsdump paths containing soong config hash An arch variant directory may contain a soong host config subdirectory. The ABI dump script extracts the last two directory names from an intermediate lsdump path. It builds the lsdump if any of the directory names matches the variant. Test: ./create_reference_dumps.py -libs libmemtrack \ -products aosp_arm64 Bug: 291850413 Change-Id: I3dafc68b0dc7bb7faf708e3adfd24082a12a691b --- vndk/tools/header-checker/utils/utils.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/vndk/tools/header-checker/utils/utils.py b/vndk/tools/header-checker/utils/utils.py index b2f48e9bd..f3e61a4ac 100644 --- a/vndk/tools/header-checker/utils/utils.py +++ b/vndk/tools/header-checker/utils/utils.py @@ -228,20 +228,28 @@ def _read_lsdump_paths(lsdump_paths_file_path, vndk_version, targets, tag, path = (x.strip() for x in line.split(':', 1)) if not path or tag in exclude_tags: continue - dirname, filename = os.path.split(path) + dir_path, filename = os.path.split(path) if not filename.endswith(SOURCE_ABI_DUMP_EXT): continue libname = filename[:-len(SOURCE_ABI_DUMP_EXT)] if not libname: continue - variant = os.path.basename(dirname) - if not variant: - continue + # dir_path may contain soong config hash. + # For example, the following dir_paths are valid. + # android_x86_x86_64_shared/012abc/libc.so.lsdump + # android_x86_x86_64_shared/libc.so.lsdump + dirnames = [] + dir_path, dirname = os.path.split(dir_path) + dirnames.append(dirname) + dirname = os.path.basename(dir_path) + dirnames.append(dirname) for target in targets: arch_cpu = target.get_arch_cpu_str() prefix = _get_module_variant_dir_name(tag, vndk_version, arch_cpu) - if not variant.startswith(prefix): + variant = next((d for d in dirnames if d.startswith(prefix)), + None) + if not variant: continue new_suffix = variant[len(prefix):] old_suffix = suffixes[libname].get(arch_cpu)