Files
android_device_xiaomi_vermeer/extract-files.py
Fiqri Ardyansyah 5771900958 vermeer: Enable elf checks for some camera libs
Reference from https://review.lineageos.org/c/LineageOS/android_tools_extract-utils/+/411165

Now we can clean the version of the symbol on the blob, this allows
the elf to be checked again on some camera libraries. The libalLDC.so,
libalhLDC.so, libMiVideoFilter.so and libTrueSight.so blobs in the camera library that
previously depended on libnativewindow have now been freed by clearing
the symbol version AHardwareBuffer_* which looks like this:

strings libalLDC.so | grep AHardwareBuffer_
AHardwareBuffer_allocate
AHardwareBuffer_describe
AHardwareBuffer_lock
AHardwareBuffer_release
AHardwareBuffer_unlock

strings libalhLDC.so | grep AHardwareBuffer_
AHardwareBuffer_allocate
AHardwareBuffer_describe
AHardwareBuffer_lock
AHardwareBuffer_release
AHardwareBuffer_unlock

strings libTrueSight.so | grep AHardwareBuffer_
AHardwareBuffer_allocate
AHardwareBuffer_describe
AHardwareBuffer_isSupported
AHardwareBuffer_lock
AHardwareBuffer_release
AHardwareBuffer_unlock
AHardwareBuffer_lockPlanes

strings libMiVideoFilter.so | grep AHardwareBuffer_
AHardwareBuffer_allocate
AHardwareBuffer_describe
AHardwareBuffer_lockPlanes
AHardwareBuffer_release
AHardwareBuffer_unlock

strings libmorpho_ubwc.so | grep AHardwareBuffer_
AHardwareBuffer_describe

WenHao2130: For socrates' libTrueSight.so, it also needs .clear_symbol_version('AHardwareBuffer_isSupported')

Change-Id: I16619cf32c4486c7600ef32ab928fb2d8c5cd5e5
Signed-off-by: Fiqri Ardyansyah <fiqri191002@gmail.com>
2025-10-12 21:25:34 -05:00

106 lines
3.3 KiB
Python
Executable File

#!/usr/bin/env -S PYTHONPATH=../../../tools/extract-utils python3
#
# SPDX-FileCopyrightText: 2024 The LineageOS Project
# SPDX-License-Identifier: Apache-2.0
#
import extract_utils.tools
from extract_utils.fixups_blob import (
blob_fixup,
blob_fixups_user_type,
)
from extract_utils.fixups_lib import (
lib_fixup_vendorcompat,
lib_fixups_user_type,
libs_proto_3_9_1,
)
from extract_utils.main import (
ExtractUtils,
ExtractUtilsModule,
)
namespace_imports = [
'device/xiaomi/sm8550-common',
'hardware/qcom-caf/sm8550',
'hardware/xiaomi',
'vendor/qcom/opensource/commonsys-intf/display',
'vendor/xiaomi/sm8550-common',
]
def lib_fixup_odm_suffix(lib: str, partition: str, *args, **kwargs):
return f'{lib}-{partition}' if partition == 'odm' else None
lib_fixups: lib_fixups_user_type = {
libs_proto_3_9_1: lib_fixup_vendorcompat,
(
'sqlite3',
): lib_fixup_odm_suffix,
}
blob_fixups: blob_fixups_user_type = {
(
'odm/etc/camera/enhance_motiontuning.xml',
'odm/etc/camera/night_motiontuning.xml',
'odm/etc/camera/motiontuning.xml'
): blob_fixup()
.regex_replace('xml=version', 'xml version'),
(
'odm/lib64/libxmi_high_dynamic_range_cdsp.so',
'odm/lib64/libailab_rawhdr.so'
): blob_fixup()
.strip_debug_sections(),
(
'odm/lib64/libcamxcommonutils.so',
'odm/lib64/hw/com.qti.chi.override.so',
'odm/lib64/hw/camera.xiaomi.so',
'odm/lib64/libchifeature2.so',
'odm/lib64/libmialgoengine.so'
): blob_fixup()
.add_needed('libprocessgroup_shim.so'),
(
'odm/lib64/libalLDC.so',
'odm/lib64/libalAILDC.so'
): blob_fixup()
.clear_symbol_version('AHardwareBuffer_allocate')
.clear_symbol_version('AHardwareBuffer_describe')
.clear_symbol_version('AHardwareBuffer_lock')
.clear_symbol_version('AHardwareBuffer_release')
.clear_symbol_version('AHardwareBuffer_unlock'),
'odm/lib64/libTrueSight.so': blob_fixup()
.clear_symbol_version('AHardwareBuffer_allocate')
.clear_symbol_version('AHardwareBuffer_describe')
.clear_symbol_version('AHardwareBuffer_isSupported')
.clear_symbol_version('AHardwareBuffer_lock')
.clear_symbol_version('AHardwareBuffer_lockPlanes')
.clear_symbol_version('AHardwareBuffer_release')
.clear_symbol_version('AHardwareBuffer_unlock'),
'odm/lib64/libMiVideoFilter.so': blob_fixup()
.clear_symbol_version('AHardwareBuffer_allocate')
.clear_symbol_version('AHardwareBuffer_describe')
.clear_symbol_version('AHardwareBuffer_lockPlanes')
.clear_symbol_version('AHardwareBuffer_release')
.clear_symbol_version('AHardwareBuffer_unlock'),
'odm/lib64/libmorpho_ubwc.so': blob_fixup()
.clear_symbol_version('AHardwareBuffer_describe'),
'odm/lib64/libwrapper_dlengine.so' : blob_fixup()
.add_needed('liblog.so'),
}
module = ExtractUtilsModule(
'vermeer',
'xiaomi',
blob_fixups=blob_fixups,
lib_fixups=lib_fixups,
namespace_imports=namespace_imports,
check_elf=True,
add_firmware_proprietary_file=True,
)
if __name__ == '__main__':
utils = ExtractUtils.device_with_common(
module, 'sm8550-common', module.vendor
)
utils.run()