summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Bestas <mkbestas@lineageos.org>2020-12-27 22:56:17 +0200
committerMichael Bestas <mkbestas@lineageos.org>2020-12-29 03:46:56 +0200
commit830a9cb8f583d7d63e207f77469aec20fbdcad7c (patch)
treea6990d9c97c8a3f0cfd98e2074f87c31023f414b
parent8e4a039f119e721b919c6cfbf937fce4aaa7b1ed (diff)
Add multi-device templates and update normal templates
Change-Id: Ic197790f30d430df4db65297f387dafd340a3a46
-rwxr-xr-xtemplates/multi-device/common/extract-files.sh87
-rwxr-xr-xtemplates/multi-device/common/setup-makefiles.sh58
-rwxr-xr-xtemplates/multi-device/device/extract-files.sh43
-rwxr-xr-xtemplates/multi-device/device/setup-makefiles.sh25
-rwxr-xr-xtemplates/single-device/extract-files.sh54
-rwxr-xr-xtemplates/single-device/setup-makefiles.sh20
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