* 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