[AT&T Samsung Galaxy S II Skyrocket SGH-I727] ktempleton:
OK i had to get it of github but its the same one i use in the build here you go i really appreciate it thanks

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'))

TARGET_DIR = os.getenv('OUT')

# 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):

****output_zip.write(os.path.join(TARGET_DIR, "boot.img"),"boot.img")

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, input_zip)

**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)