extract-files.sh 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. #!/bin/bash
  2. #
  3. # SPDX-FileCopyrightText: 2016 The CyanogenMod Project
  4. # SPDX-FileCopyrightText: 2017-2024 The LineageOS Project
  5. # SPDX-License-Identifier: Apache-2.0
  6. #
  7. set -e
  8. DEVICE=lynx
  9. VENDOR=google
  10. # Load extract_utils and do some sanity checks
  11. MY_DIR="${BASH_SOURCE%/*}"
  12. if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi
  13. ANDROID_ROOT="${MY_DIR}/../../../.."
  14. HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh"
  15. if [ ! -f "${HELPER}" ]; then
  16. echo "Unable to find helper script at ${HELPER}"
  17. exit 1
  18. fi
  19. source "${HELPER}"
  20. # Default to sanitizing the vendor folder before extraction
  21. CLEAN_VENDOR=true
  22. ONLY_FIRMWARE=
  23. KANG=
  24. SECTION=
  25. CARRIER_SKIP_FILES=()
  26. VENDOR_SKIP_FILES=()
  27. while [ "${#}" -gt 0 ]; do
  28. case "${1}" in
  29. --only-firmware)
  30. ONLY_FIRMWARE=true
  31. ;;
  32. -n | --no-cleanup)
  33. CLEAN_VENDOR=false
  34. ;;
  35. -k | --kang)
  36. KANG="--kang"
  37. ;;
  38. -s | --section)
  39. SECTION="${2}"
  40. shift
  41. CLEAN_VENDOR=false
  42. ;;
  43. *)
  44. SRC="${1}"
  45. ;;
  46. esac
  47. shift
  48. done
  49. if [ -z "${SRC}" ]; then
  50. SRC="adb"
  51. fi
  52. function blob_fixup() {
  53. case "${1}" in
  54. vendor/etc/init/init.modem_logging_control.rc)
  55. [ "$2" = "" ] && return 0
  56. sed -i 's/ && property:ro.debuggable=0//' "${2}"
  57. ;;
  58. *)
  59. return 1
  60. ;;
  61. esac
  62. return 0
  63. }
  64. function blob_fixup_dry() {
  65. blob_fixup "$1" ""
  66. }
  67. function prepare_firmware() {
  68. if [ "${SRC}" != "adb" ]; then
  69. bash "${ANDROID_ROOT}"/lineage/scripts/pixel/prepare-firmware.sh "${DEVICE}" "${SRC}"
  70. fi
  71. }
  72. # Initialize the helper
  73. setup_vendor "${DEVICE}" "${VENDOR}" "${ANDROID_ROOT}" false "${CLEAN_VENDOR}"
  74. if [ -z "${ONLY_FIRMWARE}" ]; then
  75. extract "${MY_DIR}/proprietary-files.txt" "${SRC}" "${KANG}" --section "${SECTION}"
  76. generate_prop_list_from_image "product.img" "${MY_DIR}/proprietary-files-carriersettings.txt" CARRIER_SKIP_FILES carriersettings
  77. extract "${MY_DIR}/proprietary-files-carriersettings.txt" "${SRC}" "${KANG}" --section "${SECTION}"
  78. readarray -t VENDOR_SKIP_FILES < <(cat "${MY_DIR}/skip-files-vendor.txt" | sed -E "/^[[:blank:]]*(#|$)/d")
  79. VENDOR_TXT="${MY_DIR}/proprietary-files-vendor.txt"
  80. generate_prop_list_from_image "vendor.img" "${VENDOR_TXT}" VENDOR_SKIP_FILES
  81. # flp.default & gps.default have incorrect SONAME
  82. # libExynosC2*Dec & libExynosC2*Enc depend on libacryl & libexynosv4l2, which are gnu makefile targets
  83. # lowi-server depends on libwpa_client, which is a gnu makefile target
  84. set_disable_checkelf "vendor/bin/lowi-server" "${VENDOR_TXT}"
  85. set_disable_checkelf "vendor/lib/libExynosC2H263Dec.so" "${VENDOR_TXT}"
  86. set_disable_checkelf "vendor/lib/libExynosC2H263Enc.so" "${VENDOR_TXT}"
  87. set_disable_checkelf "vendor/lib/libExynosC2H264Dec.so" "${VENDOR_TXT}"
  88. set_disable_checkelf "vendor/lib/libExynosC2H264Enc.so" "${VENDOR_TXT}"
  89. set_disable_checkelf "vendor/lib/libExynosC2HevcDec.so" "${VENDOR_TXT}"
  90. set_disable_checkelf "vendor/lib/libExynosC2HevcEnc.so" "${VENDOR_TXT}"
  91. set_disable_checkelf "vendor/lib/libExynosC2Mpeg4Dec.so" "${VENDOR_TXT}"
  92. set_disable_checkelf "vendor/lib/libExynosC2Mpeg4Enc.so" "${VENDOR_TXT}"
  93. set_disable_checkelf "vendor/lib/libExynosC2Vp8Dec.so" "${VENDOR_TXT}"
  94. set_disable_checkelf "vendor/lib/libExynosC2Vp8Enc.so" "${VENDOR_TXT}"
  95. set_disable_checkelf "vendor/lib/libExynosC2Vp9Dec.so" "${VENDOR_TXT}"
  96. set_disable_checkelf "vendor/lib/libExynosC2Vp9Enc.so" "${VENDOR_TXT}"
  97. set_disable_checkelf "vendor/lib64/hw/flp.default.so" "${VENDOR_TXT}"
  98. set_disable_checkelf "vendor/lib64/hw/gps.default.so" "${VENDOR_TXT}"
  99. set_disable_checkelf "vendor/lib64/libExynosC2H263Dec.so" "${VENDOR_TXT}"
  100. set_disable_checkelf "vendor/lib64/libExynosC2H263Enc.so" "${VENDOR_TXT}"
  101. set_disable_checkelf "vendor/lib64/libExynosC2H264Dec.so" "${VENDOR_TXT}"
  102. set_disable_checkelf "vendor/lib64/libExynosC2H264Enc.so" "${VENDOR_TXT}"
  103. set_disable_checkelf "vendor/lib64/libExynosC2HevcDec.so" "${VENDOR_TXT}"
  104. set_disable_checkelf "vendor/lib64/libExynosC2HevcEnc.so" "${VENDOR_TXT}"
  105. set_disable_checkelf "vendor/lib64/libExynosC2Mpeg4Dec.so" "${VENDOR_TXT}"
  106. set_disable_checkelf "vendor/lib64/libExynosC2Mpeg4Enc.so" "${VENDOR_TXT}"
  107. set_disable_checkelf "vendor/lib64/libExynosC2Vp8Dec.so" "${VENDOR_TXT}"
  108. set_disable_checkelf "vendor/lib64/libExynosC2Vp8Enc.so" "${VENDOR_TXT}"
  109. set_disable_checkelf "vendor/lib64/libExynosC2Vp9Dec.so" "${VENDOR_TXT}"
  110. set_disable_checkelf "vendor/lib64/libExynosC2Vp9Enc.so" "${VENDOR_TXT}"
  111. set_module_suffix "vendor/lib/com.google.edgetpu_app_service-V3-ndk.so" "-vendor" "${VENDOR_TXT}"
  112. set_module_suffix "vendor/lib64/com.google.edgetpu_app_service-V3-ndk.so" "-vendor" "${VENDOR_TXT}"
  113. set_module_suffix "vendor/lib64/com.google.edgetpu_vendor_service-V2-ndk.so" "-vendor" "${VENDOR_TXT}"
  114. extract "${MY_DIR}/proprietary-files-vendor.txt" "${SRC}" "${KANG}" --section "${SECTION}"
  115. fi
  116. if [ -z "${SECTION}" ]; then
  117. extract_firmware "${MY_DIR}/proprietary-firmware.txt" "${SRC}"
  118. fi
  119. "${MY_DIR}/setup-makefiles.sh"