diff options
author | Yifan Hong <elsk@google.com> | 2020-09-01 22:41:36 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2020-09-01 22:41:36 +0000 |
commit | 14dd17bd8971ac89597882c287abc39927dab0f8 (patch) | |
tree | ed094878d1bd941bc64d8d4ef9aa4f92ee3bc5b8 | |
parent | d62949cffb5cddf7465811ec610e586285099ff9 (diff) | |
parent | 5b8ce8713bf378c6eae4cf60f24e7211897a0a7f (diff) | |
download | extras-14dd17bd8971ac89597882c287abc39927dab0f8.tar.gz |
Merge "Generic rules to build GKI APEXes"
-rw-r--r-- | gki/Android.bp | 31 | ||||
-rw-r--r-- | gki/com.android.gki.avbpubkey | bin | 0 -> 1032 bytes | |||
-rw-r--r-- | gki/com.android.gki.pem | 51 | ||||
-rw-r--r-- | gki/postinstall.sh | 3 | ||||
-rw-r--r-- | gki/preinstall.sh | 39 |
5 files changed, 124 insertions, 0 deletions
diff --git a/gki/Android.bp b/gki/Android.bp index 1d907cdd..46fcb0aa 100644 --- a/gki/Android.bp +++ b/gki/Android.bp @@ -35,3 +35,34 @@ python_binary_host { }, }, } + +apex_key { + name: "com.android.gki.key", + public_key: "com.android.gki.avbpubkey", + private_key: "com.android.gki.pem", +} + +sh_binary { + name: "com.android.gki.preinstall", + src: "preinstall.sh", +} + +sh_binary { + name: "com.android.gki.postinstall", + src: "postinstall.sh", +} + +// Common defaults for all GKI APEXes. +apex_defaults { + name: "com.android.gki_defaults", + binaries: [ + "update_engine_stable_client", + "com.android.gki.preinstall", + "com.android.gki.postinstall", + ], + file_contexts: ":com.android.gki-file_contexts", + // Key to sign apex_payload.img + key: "com.android.gki.key", + // Key to sign APEX. Left empty to use defaults. + certificate: "", +} diff --git a/gki/com.android.gki.avbpubkey b/gki/com.android.gki.avbpubkey Binary files differnew file mode 100644 index 00000000..166d37ee --- /dev/null +++ b/gki/com.android.gki.avbpubkey diff --git a/gki/com.android.gki.pem b/gki/com.android.gki.pem new file mode 100644 index 00000000..fd856789 --- /dev/null +++ b/gki/com.android.gki.pem @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/gki/postinstall.sh b/gki/postinstall.sh new file mode 100644 index 00000000..d29e65b1 --- /dev/null +++ b/gki/postinstall.sh @@ -0,0 +1,3 @@ +#!/system/bin/sh + +log -p i -t gki "GKI APEX postinstall hook starting." diff --git a/gki/preinstall.sh b/gki/preinstall.sh new file mode 100644 index 00000000..fbd16e1d --- /dev/null +++ b/gki/preinstall.sh @@ -0,0 +1,39 @@ +#!/system/bin/sh + +# sleep_exit [<exit_code>] +function sleep_exit() { + # Sleep before exit to ensure logs flushes. + sleep 5s + exit $@ +} + +# log_gki <priority> <message> +function log_gki() { + log -t gki -p $@ +} + +log_gki i "GKI APEX preinstall hook starting." + +mydir=$(dirname $(dirname $(realpath "$0"))) +if [[ $(dirname $mydir) != "/apex" ]] || [[ $(basename $mydir) != com.android.gki.* ]]; then + log_gki e "This script must be installed under /apex/com.android.gki.*" + sleep_exit 1 +fi + +# The pre-installed APEX does not contain any OTA payload. Just skip installing anything. +if [[ ! -f ${mydir}/etc/ota/payload.bin ]]; then + log_gki e "No payload.bin found." + sleep_exit 1 +fi + +log_gki i "Applying payload."; + +if ! ${mydir}/bin/update_engine_stable_client \ + --payload ${mydir}/etc/ota/payload.bin \ + --headers "$(cat ${mydir}/etc/ota/payload_properties.txt)"; then + log_gki e "OTA failed" + sleep_exit 1 +fi + +log_gki i "OTA successful" +sleep_exit 0 |