summaryrefslogtreecommitdiffstats
path: root/releasetools/aries_ota_from_target_files
diff options
context:
space:
mode:
Diffstat (limited to 'releasetools/aries_ota_from_target_files')
-rwxr-xr-xreleasetools/aries_ota_from_target_files138
1 files changed, 138 insertions, 0 deletions
diff --git a/releasetools/aries_ota_from_target_files b/releasetools/aries_ota_from_target_files
new file mode 100755
index 0000000..dd2ae66
--- /dev/null
+++ b/releasetools/aries_ota_from_target_files
@@ -0,0 +1,138 @@
+#!/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 aries_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'))
+TARGET_DIR = os.getenv('OUT')
+UTILITIES_DIR = os.path.join(TARGET_DIR, 'utilities')
+
+# 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 aries_edify_generator as edify_generator
+
+__doc__ = ota_from_target_files.__doc__
+
+def CopyBootFiles(input_zip, output_zip):
+ output_zip.write(os.path.join(TARGET_DIR, "boot.img"),"boot.img")
+
+def CopyBMLoverMTD(output_zip):
+ """Copy the bml_over_mtd utility and script to the output."""
+ output_zip.write(os.path.join(UTILITIES_DIR, "make_ext4fs"),"make_ext4fs")
+ output_zip.write(os.path.join(UTILITIES_DIR, "busybox"),"busybox")
+ output_zip.write(os.path.join(UTILITIES_DIR, "flash_image"),"flash_image")
+ output_zip.write(os.path.join(UTILITIES_DIR, "erase_image"),"erase_image")
+ output_zip.write(os.path.join(UTILITIES_DIR, "bml_over_mtd"),"bml_over_mtd")
+ output_zip.write(os.path.join(LOCAL_DIR, "bml_over_mtd.sh"),"bml_over_mtd.sh")
+ output_zip.write(os.path.join(LOCAL_DIR, "updater.sh"),"updater.sh")
+
+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", input_zip),
+ "pre-device": GetBuildProp("ro.product.device", input_zip),
+ "post-timestamp": GetBuildProp("ro.build.date.utc", input_zip),
+ }
+
+ 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)
+
+# if not OPTIONS.omit_prereq:
+# ts = GetBuildProp("ro.build.date.utc", input_zip)
+# script.AssertOlderBuild(ts)
+
+ AppendAssertions(script, input_zip)
+ device_specific.FullOTA_Assertions()
+ if OPTIONS.backuptool:
+ script.RunBackup("backup")
+
+ script.ShowProgress(0.5, 0)
+
+ if OPTIONS.wipe_user_data:
+ script.FormatPartition("/data")
+
+ script.FormatPartition("/system")
+ script.Mount("/system")
+ script.UnpackPackageDir("recovery", "/system")
+ script.UnpackPackageDir("system", "/system")
+
+ symlinks = CopySystemFiles(input_zip, output_zip)
+ script.MakeSymlinks(symlinks)
+
+ 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.RunModelidCfg()
+
+ script.RunVerifyCachePartitionSize()
+
+ CopyBootFiles(input_zip, output_zip)
+ CopyBMLoverMTD(output_zip)
+
+ script.ShowProgress(0.2, 10)
+ script.WriteBMLoverMTD("boot", "72", "reservoir", "2004", "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 Samsung Galaxy S 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)