Restore applypatch/updater/edify for non-A/B OTA support
Google deleted this source from bootable/recovery outright (commit c7ebad5f, "rm -rf non-AB code", 2024-04-05) — confirmed present at android-14, absent at android-16.0.0_r4. The runtime side (install.cpp's SetUpNonAbUpdateCommands) and build-side packaging (ota_from_target_files.py's GenerateNonAbOtaPackage) both survived; only the source that builds the update-binary executable itself was removed. Sourced from TeamWin's android_bootable_recovery (android-14.1), the only living copy found, with install/ZipUtil.cpp, get_args.cpp, and set_metadata.cpp intentionally left out (only wired into TeamWin's modified install.cpp, which PawletOS isn't adopting — twrpinstall carries its own independent copies). Kept as its own repo, not folded into a recovery fork, so it's buildable independent of whichever recovery UI ends up in use.
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
# Copyright 2009 The Android Open Source 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.
|
||||
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
ifneq ($(wildcard external/e2fsprogs/misc/tune2fs.h),)
|
||||
tune2fs_static_libraries := \
|
||||
libext2_com_err \
|
||||
libext2_blkid \
|
||||
libext2_quota \
|
||||
libext2_uuid \
|
||||
libext2_e2p \
|
||||
libext2fs
|
||||
LOCAL_CFLAGS += -DHAVE_LIBTUNE2FS
|
||||
else
|
||||
tune2fs_static_libraries :=
|
||||
endif
|
||||
|
||||
updater_common_static_libraries := \
|
||||
libapplypatch \
|
||||
libbootloader_message \
|
||||
libbspatch \
|
||||
libedify \
|
||||
libotautil \
|
||||
libext4_utils \
|
||||
libdm \
|
||||
libfec \
|
||||
libfec_rs \
|
||||
libavb \
|
||||
libverity_tree \
|
||||
liblog \
|
||||
liblp \
|
||||
libselinux \
|
||||
libsparse \
|
||||
libsquashfs_utils \
|
||||
libbrotli \
|
||||
libbz \
|
||||
libziparchive \
|
||||
libz \
|
||||
libbase \
|
||||
libcrypto_static \
|
||||
libcrypto_utils \
|
||||
libcutils \
|
||||
libutils
|
||||
|
||||
|
||||
# Each library in TARGET_RECOVERY_UPDATER_LIBS should have a function
|
||||
# named "Register_<libname>()". Here we emit a little C function that
|
||||
# gets #included by updater.cpp. It calls all those registration
|
||||
# functions.
|
||||
# $(1): the path to the register.inc file
|
||||
# $(2): a list of TARGET_RECOVERY_UPDATER_LIBS
|
||||
define generate-register-inc
|
||||
$(hide) mkdir -p $(dir $(1))
|
||||
$(hide) echo "" > $(1)
|
||||
$(hide) $(foreach lib,$(2),echo "extern void Register_$(lib)(void);" >> $(1);)
|
||||
$(hide) echo "void RegisterDeviceExtensions() {" >> $(1)
|
||||
$(hide) $(foreach lib,$(2),echo " Register_$(lib)();" >> $(1);)
|
||||
$(hide) echo "}" >> $(1)
|
||||
endef
|
||||
|
||||
|
||||
# updater (static executable)
|
||||
# ===============================
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE := updater
|
||||
LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
|
||||
LOCAL_LICENSE_CONDITIONS := notice
|
||||
LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../NOTICE
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
updater_main.cpp
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
$(LOCAL_PATH)/include
|
||||
|
||||
LOCAL_CFLAGS := \
|
||||
-Wall \
|
||||
-Werror
|
||||
|
||||
LOCAL_STATIC_LIBRARIES := \
|
||||
libupdater_device \
|
||||
libupdater_core \
|
||||
$(TARGET_RECOVERY_UPDATER_LIBS) \
|
||||
$(TARGET_RECOVERY_UPDATER_EXTRA_LIBS) \
|
||||
$(updater_common_static_libraries) \
|
||||
libfs_mgr \
|
||||
libtune2fs \
|
||||
$(tune2fs_static_libraries)
|
||||
|
||||
LOCAL_HEADER_LIBRARIES := libgtest_prod_headers
|
||||
|
||||
LOCAL_MODULE_CLASS := EXECUTABLES
|
||||
inc := $(call local-generated-sources-dir)/register.inc
|
||||
|
||||
# Devices can also add libraries to TARGET_RECOVERY_UPDATER_EXTRA_LIBS.
|
||||
# These libs are also linked in with updater, but we don't try to call
|
||||
# any sort of registration function for these. Use this variable for
|
||||
# any subsidiary static libraries required for your registered
|
||||
# extension libs.
|
||||
$(inc) : libs := $(TARGET_RECOVERY_UPDATER_LIBS)
|
||||
$(inc) :
|
||||
$(call generate-register-inc,$@,$(libs))
|
||||
|
||||
LOCAL_GENERATED_SOURCES := $(inc)
|
||||
|
||||
inc :=
|
||||
|
||||
LOCAL_FORCE_STATIC_EXECUTABLE := true
|
||||
|
||||
include $(BUILD_EXECUTABLE)
|
||||
Reference in New Issue
Block a user