This change lets us use gc5035 camera, which was blocked by OnePlus long time ago after people discovered its *magic* capabilities. By default only `com.oem.autotest` can use it, however if we replace the first character with a NULL byte, then strncmp returns 0, and thus we pass the check and allow everyone to use it. You can see the logs below that led me to discover that behavior. [DEBUG ] JIANJIA.cpp:89 PretendOpenCamera() logicalCameraId 4, m_ClientPackageName 0 [DEBUG ] STELLA.cpp:1445 informKernel() force: -1 value: 6 buf: 5 [DEBUG ] chxextensionmodule.cpp:1005 ExtendOpen() You shall not pass 0 [DEBUG ] chxextensioninterface.cpp:298 chi_extend_open() [OP_EXT] OPEN_CAMERA X [ERROR][HAL ] camxhal3module.cpp:772 ProcessCameraOpen() Camera Open failed with error status = CamxResultEInvalidArg Change-Id: I9b3e4e55f07cef40886e09941f7ed0523cdf8cfa
88 lines
2.2 KiB
Bash
Executable File
88 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Copyright (C) 2016 The CyanogenMod Project
|
|
# Copyright (C) 2017-2020 The LineageOS Project
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
set -e
|
|
|
|
# Load extract_utils and do some sanity checks
|
|
MY_DIR="${BASH_SOURCE%/*}"
|
|
if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi
|
|
|
|
ANDROID_ROOT="${MY_DIR}/../../.."
|
|
|
|
HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh"
|
|
if [ ! -f "${HELPER}" ]; then
|
|
echo "Unable to find helper script at ${HELPER}"
|
|
exit 1
|
|
fi
|
|
source "${HELPER}"
|
|
|
|
# Default to sanitizing the vendor folder before extraction
|
|
CLEAN_VENDOR=true
|
|
|
|
ONLY_COMMON=
|
|
ONLY_TARGET=
|
|
KANG=
|
|
SECTION=
|
|
|
|
while [ "${#}" -gt 0 ]; do
|
|
case "${1}" in
|
|
--only-common )
|
|
ONLY_COMMON=true
|
|
;;
|
|
--only-target )
|
|
ONLY_TARGET=true
|
|
;;
|
|
-n | --no-cleanup )
|
|
CLEAN_VENDOR=false
|
|
;;
|
|
-k | --kang )
|
|
KANG="--kang"
|
|
;;
|
|
-s | --section )
|
|
SECTION="${2}"; shift
|
|
CLEAN_VENDOR=false
|
|
;;
|
|
* )
|
|
SRC="${1}"
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
if [ -z "${SRC}" ]; then
|
|
SRC="adb"
|
|
fi
|
|
|
|
function blob_fixup() {
|
|
case "${1}" in
|
|
system_ext/lib64/libwfdnative.so)
|
|
sed -i "s/android.hidl.base@1.0.so/libhidlbase.so\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00/" "${2}"
|
|
;;
|
|
vendor/lib64/hw/com.qti.chi.override.so)
|
|
sed -i "s/com.oem.autotest/\x00om.oem.autotest/" "${2}"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
if [ -z "${ONLY_TARGET}" ]; then
|
|
# Initialize the helper for common device
|
|
setup_vendor "${DEVICE_COMMON}" "${VENDOR}" "${ANDROID_ROOT}" true "${CLEAN_VENDOR}"
|
|
|
|
extract "${MY_DIR}/proprietary-files.txt" "${SRC}" "${KANG}" --section "${SECTION}"
|
|
fi
|
|
|
|
if [ -z "${ONLY_COMMON}" ] && [ -s "${MY_DIR}/../${DEVICE}/proprietary-files.txt" ]; then
|
|
# Reinitialize the helper for device
|
|
source "${MY_DIR}/../${DEVICE}/extract-files.sh"
|
|
setup_vendor "${DEVICE}" "${VENDOR}" "${ANDROID_ROOT}" false "${CLEAN_VENDOR}"
|
|
|
|
extract "${MY_DIR}/../${DEVICE}/proprietary-files.txt" "${SRC}" "${KANG}" --section "${SECTION}"
|
|
fi
|
|
|
|
"${MY_DIR}/setup-makefiles.sh"
|