android_device_xiaomi_sdm84.../releasetools.py
Akhil Narang 9c4a6ca5ec sdm845-common: Additionally assert on vendor build date and VNDK version
This adds vendor image version assertions, so that the OTA package
is not installed unless the recommended vendor (and matching firmware)
or newer is present in the device.

The checks that are now in place are: modem timestamp, vendor build date
(in UTC format) and corresponding VNDK version.

Change-Id: I1aef57d03ee86040f2eb3a02f79cc3f00ae9cda3
Signed-off-by: Akhil Narang <akhilnarang.1999@gmail.com>
2018-11-18 16:20:47 +01:00

54 lines
2.4 KiB
Python

# Copyright (C) 2009 The Android Open Source Project
# Copyright (c) 2011, The Linux Foundation. All rights reserved.
# Copyright (C) 2017-2018 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 hashlib
import common
import re
def FullOTA_Assertions(info):
AddModemAssertion(info, info.input_zip)
AddVendorAssertion(info, info.input_zip)
return
def IncrementalOTA_Assertions(info):
AddModemAssertion(info, info.target_zip)
AddVendorAssertion(info, info.target_zip)
return
def AddModemAssertion(info, input_zip):
android_info = info.input_zip.read("OTA/android-info.txt")
m = re.search(r'require\s+version-modem\s*=\s*(.+)', android_info)
miui_version = re.search(r'require\s+version-miui\s*=\s*(.+)', android_info)
if m and miui_version:
timestamp = m.group(1).rstrip()
firmware_version = miui_version.group(1).rstrip()
if ((len(timestamp) and '*' not in timestamp) and \
(len(firmware_version) and '*' not in firmware_version)):
cmd = 'assert(xiaomi.verify_modem("{}") == "1" || abort("ERROR: This package requires firmware from MIUI {} developer build or newer. Please upgrade firmware and retry!"););'
info.script.AppendExtra(cmd.format(timestamp, firmware_version))
return
def AddVendorAssertion(info, input_zip):
android_info = info.input_zip.read("OTA/android-info.txt")
v = re.search(r'require\s+version-vendor\s*=\s*(.+)', android_info)
miui_version = re.search(r'require\s+version-miui\s*=\s*(.+)', android_info)
if v and miui_version:
build_date_utc, vndk_version = v.group(1).rstrip().split(',')
firmware_version = miui_version.group(1).rstrip()
cmd = 'assert(xiaomi.verify_vendor("{}", "{}") == "1" || abort("ERROR: This package requires vendor from MIUI {} developer build or newer. Please upgrade vendor image along with matching firmware and retry!"););'
info.script.AppendExtra(cmd.format(build_date_utc, vndk_version, firmware_version))
return