Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f117962e authored by Ethan Yonker's avatar Ethan Yonker
Browse files

Make it backwards compatible with 4.4

Change-Id: I668604cddc8e8afbf78709f3f872bea4e9f4aa06
parent 34ae483e
Loading
Loading
Loading
Loading
+55 −21
Original line number Diff line number Diff line
@@ -116,12 +116,18 @@ LOCAL_SHARED_LIBRARIES :=

LOCAL_STATIC_LIBRARIES += libguitwrp
LOCAL_SHARED_LIBRARIES += libaosprecovery libz libc libcutils libstdc++ libtar libblkid libminuitwrp libminadbd libmtdutils libminzip libtwadbbu
LOCAL_SHARED_LIBRARIES += libcrecovery libbase libcrypto
LOCAL_SHARED_LIBRARIES += libcrecovery

ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23; echo $$?),0)
    LOCAL_SHARED_LIBRARIES += libstlport
    LOCAL_SHARED_LIBRARIES += libstlport libmincrypttwrp
    LOCAL_C_INCLUDES += $(LOCAL_PATH)/libmincrypt/includes
    LOCAL_CFLAGS += -DUSE_OLD_VERIFIER
else
    LOCAL_SHARED_LIBRARIES += libc++
    LOCAL_SHARED_LIBRARIES += libc++ libcrypto
endif

ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 24; echo $$?),0)
    LOCAL_SHARED_LIBRARIES += libbase
endif

ifneq ($(wildcard system/core/libsparse/Android.mk),)
@@ -340,13 +346,15 @@ LOCAL_ADDITIONAL_DEPENDENCIES := \
    mke2fs.conf \
    pigz \
    teamwin \
    toolbox_symlinks \
    twrp \
    unpigz_symlink \
    fsck.fat \
    fatlabel \
    mkfs.fat \
    permissive.sh \
    simg2img_twrp
    simg2img_twrp \
    init.recovery.service.rc

ifneq ($(TARGET_ARCH), arm64)
    ifneq ($(TARGET_ARCH), x86_64)
@@ -503,6 +511,7 @@ endif # !TW_USE_TOOLBOX

# recovery-persist (system partition dynamic executable run after /data mounts)
# ===============================
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 24; echo $$?),0)
    include $(CLEAR_VARS)
    LOCAL_SRC_FILES := recovery-persist.cpp
    LOCAL_MODULE := recovery-persist
@@ -510,9 +519,11 @@ LOCAL_SHARED_LIBRARIES := liblog libbase
    LOCAL_CFLAGS := -Werror
    LOCAL_INIT_RC := recovery-persist.rc
    include $(BUILD_EXECUTABLE)
endif

# recovery-refresh (system partition dynamic executable run at init)
# ===============================
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 24; echo $$?),0)
    include $(CLEAR_VARS)
    LOCAL_SRC_FILES := recovery-refresh.cpp
    LOCAL_MODULE := recovery-refresh
@@ -520,6 +531,7 @@ LOCAL_SHARED_LIBRARIES := liblog
    LOCAL_CFLAGS := -Werror
    LOCAL_INIT_RC := recovery-refresh.rc
    include $(BUILD_EXECUTABLE)
endif

# shared libfusesideload
# ===============================
@@ -531,7 +543,14 @@ LOCAL_CFLAGS += -D_XOPEN_SOURCE -D_GNU_SOURCE

LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := libfusesideload
LOCAL_SHARED_LIBRARIES := libcutils libc libcrypto
LOCAL_SHARED_LIBRARIES := libcutils libc
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 22; echo $$?),0)
    LOCAL_C_INCLUDES := $(LOCAL_PATH)/libmincrypt/includes
    LOCAL_SHARED_LIBRARIES += libmincrypttwrp
    LOCAL_CFLAGS += -DUSE_MINCRYPT
else
    LOCAL_SHARED_LIBRARIES += libcrypto
endif
include $(BUILD_SHARED_LIBRARY)

# shared libaosprecovery for Apache code
@@ -540,8 +559,18 @@ include $(CLEAR_VARS)

LOCAL_MODULE := libaosprecovery
LOCAL_MODULE_TAGS := eng optional
LOCAL_SRC_FILES := adb_install.cpp asn1_decoder.cpp bootloader.cpp legacy_property_service.c verifier.cpp set_metadata.c tw_atomic.cpp
LOCAL_SHARED_LIBRARIES += libc liblog libcutils libmtdutils libfusesideload libselinux libcrypto
LOCAL_CFLAGS := -std=gnu++0x
LOCAL_SRC_FILES := adb_install.cpp asn1_decoder.cpp bootloader.cpp legacy_property_service.cpp set_metadata.cpp tw_atomic.cpp
LOCAL_SHARED_LIBRARIES += libc liblog libcutils libmtdutils libfusesideload libselinux
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23; echo $$?),0)
    LOCAL_SHARED_LIBRARIES += libstdc++ libstlport libmincrypttwrp
    LOCAL_C_INCLUDES := bionic external/stlport/stlport $(LOCAL_PATH)/libmincrypt/includes
    LOCAL_SRC_FILES += oldverifier/verifier.cpp
    LOCAL_CFLAGS += -DUSE_OLD_VERIFIER
else
    LOCAL_SHARED_LIBRARIES += libc++ libcrypto
    LOCAL_SRC_FILES += verifier.cpp
endif

ifneq ($(BOARD_RECOVERY_BLDRMSG_OFFSET),)
    LOCAL_CFLAGS += -DBOARD_RECOVERY_BLDRMSG_OFFSET=$(BOARD_RECOVERY_BLDRMSG_OFFSET)
@@ -598,6 +627,7 @@ include $(commands_recovery_local_path)/injecttwrp/Android.mk \
    $(commands_recovery_local_path)/libblkid/Android.mk \
    $(commands_recovery_local_path)/minuitwrp/Android.mk \
    $(commands_recovery_local_path)/openaes/Android.mk \
    $(commands_recovery_local_path)/toolbox/Android.mk \
    $(commands_recovery_local_path)/twrpTarMain/Android.mk \
    $(commands_recovery_local_path)/mtp/Android.mk \
    $(commands_recovery_local_path)/minzip/Android.mk \
@@ -608,6 +638,10 @@ include $(commands_recovery_local_path)/injecttwrp/Android.mk \
    $(commands_recovery_local_path)/adbbu/Android.mk \
    $(commands_recovery_local_path)/libpixelflinger/Android.mk

ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23; echo $$?),0)
    include $(commands_recovery_local_path)/libmincrypt/Android.mk
endif

ifeq ($(TW_INCLUDE_CRYPTO), true)
    include $(commands_recovery_local_path)/crypto/lollipop/Android.mk
    include $(commands_recovery_local_path)/crypto/scrypt/Android.mk
+4 −0
Original line number Diff line number Diff line
@@ -31,7 +31,11 @@
#include "adb_install.h"
#include "minadbd/fuse_adb_provider.h"
#include "fuse_sideload.h"
#ifdef USE_OLD_VERIFIER
#include "oldverifier/verifier.h"
#else
#include "verifier.h"
#endif

static RecoveryUI* ui = NULL;

+11 −8
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ extern "C" {
#include "common.h"
#include "mtdutils/mtdutils.h"
//#include "roots.h"
#include "unique_fd.h"
//#include "unique_fd.h"

// fake Volume struct that allows us to use the AOSP code easily
struct Volume
@@ -232,33 +232,36 @@ static int get_bootloader_message_block(bootloader_message* out,
static int set_bootloader_message_block(const bootloader_message* in,
                                        const Volume* v) {
    wait_for_device(v->blk_device);
    unique_fd fd(open(v->blk_device, O_WRONLY | O_SYNC));
    if (fd.get() == -1) {
    int fd = open(v->blk_device, O_WRONLY | O_SYNC);
    if (fd == -1) {
        LOGE("failed to open \"%s\": %s\n", v->blk_device, strerror(errno));
        return -1;
    }

#ifdef BOARD_RECOVERY_BLDRMSG_OFFSET
    lseek(fd.get(), BOARD_RECOVERY_BLDRMSG_OFFSET, SEEK_SET);
    lseek(fd, BOARD_RECOVERY_BLDRMSG_OFFSET, SEEK_SET);
#endif

    size_t written = 0;
    const uint8_t* start = reinterpret_cast<const uint8_t*>(in);
    size_t total = sizeof(*in);
    while (written < total) {
        ssize_t wrote = TEMP_FAILURE_RETRY(write(fd.get(), start + written, total - written));
        ssize_t wrote = TEMP_FAILURE_RETRY(write(fd, start + written, total - written));
        if (wrote == -1) {
            LOGE("failed to write %" PRId64 " bytes: %s\n",
                 static_cast<off64_t>(written), strerror(errno));
            LOGE("failed to write some bytes: %s\n",
                 strerror(errno));
            close(fd);
            return -1;
        }
        written += wrote;
    }

    if (fsync(fd.get()) == -1) {
    if (fsync(fd) == -1) {
        LOGE("failed to fsync \"%s\": %s\n", v->blk_device, strerror(errno));
        close(fd);
        return -1;
    }
    close(fd);
    return 0;
}

+20 −0
Original line number Diff line number Diff line
@@ -31,6 +31,26 @@ include $(BUILD_PREBUILT)

endif

ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 22; echo $$?),0)
    include $(CLEAR_VARS)
    LOCAL_MODULE := init.recovery.service.rc
    LOCAL_MODULE_TAGS := eng
    LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
    LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)

    LOCAL_SRC_FILES := init.recovery.servicenew.rc
    include $(BUILD_PREBUILT)
else
    include $(CLEAR_VARS)
    LOCAL_MODULE := init.recovery.service.rc
    LOCAL_MODULE_TAGS := eng
    LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
    LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)

    LOCAL_SRC_FILES := init.recovery.serviceold.rc
    include $(BUILD_PREBUILT)
endif

ifeq ($(TWRP_INCLUDE_LOGCAT), true)
    ifeq ($(TARGET_USES_LOGD), true)

+1 −3
Original line number Diff line number Diff line
import /init.recovery.logd.rc
import /init.recovery.usb.rc
import /init.recovery.service.rc
import /init.recovery.${ro.hardware}.rc

on early-init
@@ -109,9 +110,6 @@ service healthd /sbin/healthd -r
    critical
    seclabel u:r:healthd:s0

service recovery /sbin/recovery
    seclabel u:r:recovery:s0

service adbd /sbin/adbd --root_seclabel=u:r:su:s0 --device_banner=recovery
    disabled
    socket adbd stream 660 system system
Loading