* Require T firmware Change-Id: I5ab3744ec2a61249d6d7dd5380b40f0ad3e7e7bafourteen-wip
parent
ef2932e0c8
commit
f314d075f9
@ -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…
Reference in new issue