sm7125-common: squashed import of releasetools

* Require T firmware

Change-Id: I5ab3744ec2a61249d6d7dd5380b40f0ad3e7e7ba
fourteen-wip
Tim Zimmermann 23 years ago committed by Simon1511
parent ef2932e0c8
commit f314d075f9
  1. 5
      BoardConfigCommon.mk
  2. 1
      board-info.txt
  3. 28
      recovery/Android.bp
  4. 51
      recovery/recovery_updater.cpp
  5. 53
      releasetools.py

@ -197,6 +197,11 @@ BOARD_INCLUDE_RECOVERY_DTBO := true
TARGET_RECOVERY_PIXEL_FORMAT := RGBX_8888 TARGET_RECOVERY_PIXEL_FORMAT := RGBX_8888
TARGET_USES_MKE2FS := true TARGET_USES_MKE2FS := true
TARGET_RECOVERY_FSTAB := $(COMMON_PATH)/rootdir/etc/fstab.default TARGET_RECOVERY_FSTAB := $(COMMON_PATH)/rootdir/etc/fstab.default
TARGET_BOARD_INFO_FILE := $(COMMON_PATH)/board-info.txt
# Releasetools
TARGET_RECOVERY_UPDATER_LIBS := librecovery_updater_samsung_sm7125
TARGET_RELEASETOOLS_EXTENSIONS := $(COMMON_PATH)/releasetools
# SePolicy # SePolicy
include device/qcom/sepolicy_vndr-legacy-um/SEPolicy.mk include device/qcom/sepolicy_vndr-legacy-um/SEPolicy.mk

@ -0,0 +1 @@
require version-bootloader-min=C

@ -0,0 +1,28 @@
//
// Copyright (C) 2022 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.
//
cc_library_static {
name: "librecovery_updater_samsung_sm7125",
srcs: [
"recovery_updater.cpp",
],
include_dirs: [
"system/libbase/include",
"bootable/recovery",
"bootable/recovery/edify/include",
"bootable/recovery/otautil/include"
],
}

@ -0,0 +1,51 @@
/*
* Copyright (C) 2022, 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.
*/
#include <android-base/properties.h>
#include "edify/expr.h"
#include "otautil/error_code.h"
Value *VerifyBootloader(const char *name, State *state,
const std::vector<std::unique_ptr<Expr>> &argv) {
int ret = 0;
std::string bootloader = android::base::GetProperty("ro.boot.bootloader", "");
if (bootloader.empty()) {
return ErrorAbort(state, kFileGetPropFailure,
"%s() failed to read current bootloader version", name);
}
std::string min_supported_bootloader_arg;
if (argv.empty() || !Evaluate(state, argv[0], &min_supported_bootloader_arg)) {
return ErrorAbort(state, kArgsParsingFailure,
"%s() error parsing arguments", name);
}
int min_supported_bootloader = int(min_supported_bootloader_arg[0]);
int version = 0;
if (bootloader.length() >= 4)
version = int(bootloader[bootloader.length() - 4]);
if (version >= min_supported_bootloader) {
ret = 1;
}
return StringValue(std::to_string(ret));
}
void Register_librecovery_updater_samsung_sm7125() {
RegisterFunction("samsung_sm7125.verify_bootloader_min", VerifyBootloader);
}

@ -0,0 +1,53 @@
#!/bin/env python3
#
# Copyright (C) 2021 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.
import common
import re
def FullOTA_Assertions(info):
OTA_Assertions(info)
return
def FullOTA_InstallEnd(info):
OTA_InstallEnd(info)
return
def IncrementalOTA_Assertions(info):
OTA_Assertions(info)
return
def IncrementalOTA_InstallEnd(info):
OTA_InstallEnd(info)
return
def OTA_Assertions(info):
android_info = info.input_zip.read("OTA/android-info.txt")
m = re.search(r'require\s+version-bootloader-min\s*=\s*(\S+)', android_info.decode('utf-8'))
if m:
bootloader_version = m.group(1)
cmd = ('assert(samsung_sm7125.verify_bootloader_min("{}") == "1" || abort("ERROR: This package requires Android 13 based firmware. Please upgrade firmware and retry!"););').format(bootloader_version)
info.script.AppendExtra(cmd)
return
def AddImage(info, basename, dest):
data = info.input_zip.read("IMAGES/" + basename)
common.ZipWriteStr(info.output_zip, basename, data)
info.script.Print("Patching {} image unconditionally...".format(dest.split('/')[-1]))
info.script.AppendExtra('package_extract_file("%s", "%s");' % (basename, dest))
def OTA_InstallEnd(info):
AddImage(info, "dtbo.img", "/dev/block/by-name/dtbo")
return
Loading…
Cancel
Save