64bc8af31f
The OTA script may be run during a signing process and will not have OUT variables defined. Use the common methods for getting the boot.img to match standards. Change-Id: I4eebf58ec828f18f62176a2862e5fdbb839cb658
125 lines
4.2 KiB
Python
Executable File
125 lines
4.2 KiB
Python
Executable File
#!/usr/bin/env python
|
|
#
|
|
# Copyright (C) 2008 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.
|
|
|
|
import sys
|
|
import os
|
|
import galaxys2_common as common
|
|
|
|
LOCAL_DIR = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..'))
|
|
RELEASETOOLS_DIR = os.path.abspath(os.path.join(LOCAL_DIR, '../../../build/tools/releasetools'))
|
|
# Add releasetools directory to python path
|
|
sys.path.append(RELEASETOOLS_DIR)
|
|
|
|
# Import the existing file so we just have to rewrite the modules we need.
|
|
# This is a nasty hack as the filename doesn't end in .py, but it works
|
|
filename = os.path.join(RELEASETOOLS_DIR, "ota_from_target_files")
|
|
ota_from_target_files = common.load_module_from_file('ota_from_target_files', filename)
|
|
|
|
from ota_from_target_files import *
|
|
import galaxys2_edify_generator as edify_generator
|
|
|
|
__doc__ = ota_from_target_files.__doc__
|
|
|
|
def CopyBootFiles(input_zip, output_zip):
|
|
boot_img = common.GetBootableImage("boot.img", "boot.img",
|
|
OPTIONS.input_tmp, "BOOT")
|
|
common.CheckSize(boot_img.data, "boot.img", OPTIONS.info_dict)
|
|
common.ZipWriteStr(output_zip, "boot.img", boot_img.data)
|
|
|
|
def WriteFullOTAPackage(input_zip, output_zip):
|
|
# TODO: how to determine this? We don't know what version it will
|
|
# be installed on top of. For now, we expect the API just won't
|
|
# change very often.
|
|
script = edify_generator.EdifyGenerator(3, OPTIONS.info_dict)
|
|
|
|
metadata = {"post-build": GetBuildProp("ro.build.fingerprint",
|
|
OPTIONS.info_dict),
|
|
"pre-device": GetBuildProp("ro.product.device",
|
|
OPTIONS.info_dict),
|
|
"post-timestamp": GetBuildProp("ro.build.date.utc",
|
|
OPTIONS.info_dict),
|
|
}
|
|
|
|
device_specific = common.DeviceSpecificParams(
|
|
input_zip=input_zip,
|
|
input_version=OPTIONS.info_dict["recovery_api_version"],
|
|
output_zip=output_zip,
|
|
script=script,
|
|
input_tmp=OPTIONS.input_tmp,
|
|
metadata=metadata,
|
|
info_dict=OPTIONS.info_dict)
|
|
|
|
AppendAssertions(script, OPTIONS.info_dict)
|
|
device_specific.FullOTA_Assertions()
|
|
if OPTIONS.backuptool:
|
|
script.Mount("/system")
|
|
script.RunBackup("backup")
|
|
script.Unmount("/system")
|
|
|
|
script.ShowProgress(0.5, 0)
|
|
|
|
if OPTIONS.wipe_user_data:
|
|
script.FormatPartition("/data")
|
|
|
|
script.Unmount("/system")
|
|
script.FormatPartition("/system")
|
|
script.Mount("/system")
|
|
script.UnpackPackageDir("recovery", "/system")
|
|
script.UnpackPackageDir("system", "/system")
|
|
|
|
symlinks = CopySystemFiles(input_zip, output_zip)
|
|
script.MakeSymlinks(symlinks)
|
|
|
|
CopyBootFiles(input_zip, output_zip)
|
|
|
|
Item.GetMetadata(input_zip)
|
|
Item.Get("system").SetPermissions(script)
|
|
|
|
script.ShowProgress(0.2, 0)
|
|
|
|
if OPTIONS.backuptool:
|
|
script.ShowProgress(0.2, 10)
|
|
script.RunBackup("restore")
|
|
|
|
script.ShowProgress(0.2, 10)
|
|
script.EMMCWriteRawImage("/dev/block/mmcblk0p5", "boot.img")
|
|
|
|
script.ShowProgress(0.1, 0)
|
|
device_specific.FullOTA_InstallEnd()
|
|
|
|
if OPTIONS.extra_script is not None:
|
|
script.AppendExtra(OPTIONS.extra_script)
|
|
|
|
script.UnmountAll()
|
|
script.AddToZip(input_zip, output_zip)
|
|
WriteMetadata(metadata, output_zip)
|
|
ota_from_target_files.WriteFullOTAPackage = WriteFullOTAPackage
|
|
|
|
|
|
def WriteIncrementalOTAPackage(target_zip, source_zip, output_zip):
|
|
print "Incremental OTA Packages are not support on the galaxys2 at this time"
|
|
sys.exit(1)
|
|
ota_from_target_files.WriteIncrementalOTAPackage = WriteIncrementalOTAPackage
|
|
|
|
if __name__ == '__main__':
|
|
try:
|
|
main(sys.argv[1:])
|
|
except common.ExternalError, e:
|
|
print
|
|
print " ERROR: %s" % (e,)
|
|
print
|
|
sys.exit(1)
|