diff options
author | Michael Bestas <mkbestas@lineageos.org> | 2020-12-27 22:56:17 +0200 |
---|---|---|
committer | Michael Bestas <mkbestas@lineageos.org> | 2020-12-29 03:46:56 +0200 |
commit | 830a9cb8f583d7d63e207f77469aec20fbdcad7c (patch) | |
tree | a6990d9c97c8a3f0cfd98e2074f87c31023f414b | |
parent | 8e4a039f119e721b919c6cfbf937fce4aaa7b1ed (diff) |
Add multi-device templates and update normal templates
Change-Id: Ic197790f30d430df4db65297f387dafd340a3a46
-rwxr-xr-x | templates/multi-device/common/extract-files.sh | 87 | ||||
-rwxr-xr-x | templates/multi-device/common/setup-makefiles.sh | 58 | ||||
-rwxr-xr-x | templates/multi-device/device/extract-files.sh | 43 | ||||
-rwxr-xr-x | templates/multi-device/device/setup-makefiles.sh | 25 | ||||
-rwxr-xr-x | templates/single-device/extract-files.sh | 54 | ||||
-rwxr-xr-x | templates/single-device/setup-makefiles.sh | 20 |
6 files changed, 261 insertions, 26 deletions
diff --git a/templates/multi-device/common/extract-files.sh b/templates/multi-device/common/extract-files.sh new file mode 100755 index 0000000..0aa3cfd --- /dev/null +++ b/templates/multi-device/common/extract-files.sh @@ -0,0 +1,87 @@ +#!/bin/bash +# +# Copyright (C) 2016 The CyanogenMod Project +# Copyright (C) 2017-2020 The LineageOS Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +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 + +KANG= +SECTION= + +while [ "${#}" -gt 0 ]; do + case "${1}" in + -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 + vendor/lib/libsample5.so) + "${PATCHELF}" --replace-needed "libsample6.so" "libsample7.so" "${2}" + ;; + vendor/lib/libsample7.so) + "${PATCHELF}" --set-soname "libsample7.so" "${2}" + ;; + esac +} + +# 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}" + +if [ -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" diff --git a/templates/multi-device/common/setup-makefiles.sh b/templates/multi-device/common/setup-makefiles.sh new file mode 100755 index 0000000..a03188d --- /dev/null +++ b/templates/multi-device/common/setup-makefiles.sh @@ -0,0 +1,58 @@ +#!/bin/bash +# +# Copyright (C) 2016 The CyanogenMod Project +# Copyright (C) 2017-2020 The LineageOS Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +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}" + +# Initialize the helper for common +setup_vendor "${DEVICE_COMMON}" "${VENDOR}" "${ANDROID_ROOT}" true + +# Warning headers and guards +write_headers "**** FILL IN ALL DEVICE NAMES, SPACE DELIMITED ****" + +# The standard common blobs +write_makefiles "${MY_DIR}/proprietary-files.txt" true + +# Finish +write_footers + +if [ -s "${MY_DIR}/../${DEVICE}/proprietary-files.txt" ]; then + # Reinitialize the helper for device + setup_vendor "${DEVICE}" "${VENDOR}" "${ANDROID_ROOT}" false + + # Warning headers and guards + write_headers + + # The standard device blobs + write_makefiles "${MY_DIR}/../${DEVICE}/proprietary-files.txt" true + + # Finish + write_footers +fi diff --git a/templates/multi-device/device/extract-files.sh b/templates/multi-device/device/extract-files.sh new file mode 100755 index 0000000..5be8797 --- /dev/null +++ b/templates/multi-device/device/extract-files.sh @@ -0,0 +1,43 @@ +#!/bin/bash +# +# Copyright (C) 2016 The CyanogenMod Project +# Copyright (C) 2017-2020 The LineageOS Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +function blob_fixup() { + case "${1}" in + vendor/lib/libsample1.so) + sed -i 's|/data/misc/sample1|/data/misc/sample2|g' "${2}" + ;; + vendor/lib64/libsample2.so) + "${PATCHELF}" --remove-needed "libsample3.so" "${2}" + "${PATCHELF}" --add-needed "libsample4.so" "${2}" + ;; + esac +} + +# If we're being sourced by the common script that we called, +# stop right here. No need to go down the rabbit hole. +if [ "${BASH_SOURCE[0]}" != "${0}" ]; then + return +fi + +set -e + +export DEVICE=**** FILL IN DEVICE NAME **** +export DEVICE_COMMON=**** FILL IN COMMON NAME **** +export VENDOR=**** FILL IN VENDOR NAME **** + +"./../../${VENDOR}/${DEVICE_COMMON}/extract-files.sh" "$@" diff --git a/templates/multi-device/device/setup-makefiles.sh b/templates/multi-device/device/setup-makefiles.sh new file mode 100755 index 0000000..94a50e7 --- /dev/null +++ b/templates/multi-device/device/setup-makefiles.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# +# Copyright (C) 2016 The CyanogenMod Project +# Copyright (C) 2017-2020 The LineageOS Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +set -e + +export DEVICE=**** FILL IN DEVICE NAME **** +export DEVICE_COMMON=**** FILL IN COMMON NAME **** +export VENDOR=**** FILL IN VENDOR NAME **** + +"./../../${VENDOR}/${DEVICE_COMMON}/setup-makefiles.sh" "$@" diff --git a/templates/single-device/extract-files.sh b/templates/single-device/extract-files.sh index 48bbbe4..075a70b 100755 --- a/templates/single-device/extract-files.sh +++ b/templates/single-device/extract-files.sh @@ -19,7 +19,7 @@ set -e DEVICE=**** FILL IN DEVICE NAME **** -VENDOR=*** FILL IN VENDOR **** +VENDOR=**** FILL IN VENDOR NAME **** # Load extract_utils and do some sanity checks MY_DIR="${BASH_SOURCE%/*}" @@ -36,32 +36,54 @@ source "${HELPER}" # Default to sanitizing the vendor folder before extraction CLEAN_VENDOR=true -SECTION= + KANG= +SECTION= -while [ "$1" != "" ]; do - case "$1" in - -n | --no-cleanup ) CLEAN_VENDOR=false - ;; - -k | --kang) KANG="--kang" - ;; - -s | --section ) shift - SECTION="$1" - CLEAN_VENDOR=false - ;; - * ) SRC="$1" - ;; +while [ "${#}" -gt 0 ]; do + case "${1}" in + -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 + SRC="adb" fi +function blob_fixup() { + case "${1}" in + vendor/lib/libsample1.so) + sed -i 's|/data/misc/sample1|/data/misc/sample2|g' "${2}" + ;; + vendor/lib64/libsample2.so) + "${PATCHELF}" --remove-needed "libsample3.so" "${2}" + "${PATCHELF}" --add-needed "libsample4.so" "${2}" + ;; + vendor/lib/libsample5.so) + "${PATCHELF}" --replace-needed "libsample6.so" "libsample7.so" "${2}" + ;; + vendor/lib/libsample7.so) + "${PATCHELF}" --set-soname "libsample7.so" "${2}" + ;; + esac +} + # Initialize the helper setup_vendor "${DEVICE}" "${VENDOR}" "${ANDROID_ROOT}" false "${CLEAN_VENDOR}" -extract "${MY_DIR}/proprietary-files.txt" "${SRC}" ${KANG} --section "${SECTION}" +extract "${MY_DIR}/proprietary-files.txt" "${SRC}" "${KANG}" --section "${SECTION}" "${MY_DIR}/setup-makefiles.sh" diff --git a/templates/single-device/setup-makefiles.sh b/templates/single-device/setup-makefiles.sh index c0c0db4..0253580 100755 --- a/templates/single-device/setup-makefiles.sh +++ b/templates/single-device/setup-makefiles.sh @@ -18,29 +18,29 @@ set -e -DEVICE=*** FILL IN DEVICE **** -VENDOR=*** FILL IN VENDOR **** +DEVICE=**** FILL IN DEVICE NAME **** +VENDOR=**** FILL IN VENDOR NAME **** # Load extract_utils and do some sanity checks MY_DIR="${BASH_SOURCE%/*}" -if [[ ! -d "$MY_DIR" ]]; then MY_DIR="$PWD"; fi +if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi -ANDROID_ROOT="$MY_DIR"/../../.. +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" +HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh" +if [ ! -f "${HELPER}" ]; then + echo "Unable to find helper script at ${HELPER}" exit 1 fi -. "$HELPER" +source "${HELPER}" # Initialize the helper -setup_vendor "$DEVICE" "$VENDOR" "$ANDROID_ROOT" +setup_vendor "${DEVICE}" "${VENDOR}" "${ANDROID_ROOT}" # Warning headers and guards write_headers -write_makefiles "$MY_DIR"/proprietary-files.txt +write_makefiles "${MY_DIR}/proprietary-files.txt" true # Finish write_footers |