diff options
| author | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2014-06-18 18:28:43 +0100 |
|---|---|---|
| committer | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2014-07-01 23:12:02 +0100 |
| commit | 07ee05c2c1da2dbb3500d672fd28c32b335ee49c (patch) | |
| tree | e9ed369a3d3b25dd0b81dc92a85ecdfabb6dcfdf | |
| parent | 7317614554f54657da3e37526cafbb5338cd2170 (diff) | |
recovery: Add a loki script as a recovery transformation step
This is required to support generated-from-boot recovery installations
Change-Id: I739c99d8beb01110920ed3539d92cf053623c757
| -rw-r--r-- | loki/Android.mk | 9 | ||||
| -rw-r--r-- | loki/loki-recovery.sh | 33 |
2 files changed, 41 insertions, 1 deletions
diff --git a/loki/Android.mk b/loki/Android.mk index 327cd0e..180b817 100644 --- a/loki/Android.mk +++ b/loki/Android.mk @@ -19,7 +19,7 @@ LOCAL_PATH := $(call my-dir) # build static binary include $(CLEAR_VARS) LOCAL_SRC_FILES := loki_flash.c loki_patch.c loki_find.c loki_unlok.c main.c -LOCAL_MODULE := loki_tool_static +LOCAL_MODULE := loki_tool_static_gproj LOCAL_MODULE_STEM := loki_tool LOCAL_MODULE_TAGS := eng # LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin @@ -33,3 +33,10 @@ LOCAL_MODULE_CLASS := ETC LOCAL_MODULE_PATH := $(TARGET_OUT)/bin LOCAL_SRC_FILES := loki.sh include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := recovery-transform.sh +LOCAL_MODULE_CLASS := ETC +LOCAL_MODULE_PATH := $(TARGET_OUT)/etc +LOCAL_SRC_FILES := loki-recovery.sh +include $(BUILD_PREBUILT) diff --git a/loki/loki-recovery.sh b/loki/loki-recovery.sh new file mode 100644 index 0000000..79d94cf --- /dev/null +++ b/loki/loki-recovery.sh @@ -0,0 +1,33 @@ +#!/system/bin/sh +# +# This leverages the loki_patch utility created by djrbliss +# See here for more information on loki: https://github.com/djrbliss/loki +# + +export C=/data/local/tmp/loki_tmpdir +RECSIZE=$1 +RECSHA1=$2 +BOOTSIZE=$3 +BOOTSHA1=$4 + +rm -rf $C +mkdir -p $C + +dd if=/dev/block/platform/msm_sdcc.1/by-name/recovery of=$C/recovery.lok +/system/bin/loki_tool unlok $C/recovery.lok $C/recovery.img + +if ! applypatch -c EMMC:$C/recovery.img:$RECSIZE:$RECSHA1; then + log -t recovery "recovery is outdated. unloki-ing all the things" + dd if=/dev/block/platform/msm_sdcc.1/by-name/boot of=$C/boot.lok + dd if=/dev/block/platform/msm_sdcc.1/by-name/aboot of=$C/aboot.img + /system/bin/loki_tool unlok $C/boot.lok $C/boot.img + log -t recovery "Installing new recovery image" + applypatch -b /system/etc/recovery-resource.dat EMMC:$C/boot.img:$BOOTSIZE:$BOOTSHA1 EMMC:$C/recovery.img $RECSHA1 $RECSIZE $BOOTSHA1:/system/recovery-from-boot.p || exit 1 + /system/bin/loki_tool patch recovery $C/aboot.img $C/recovery.img $C/recovery.lok || exit 1 + /system/bin/loki_tool flash recovery $C/recovery.lok || exit 1 +else + log -t recovery "Recovery image already installed" +fi + +rm -rf $C +exit 0 |
