[Streak 5 Android Development] TheManii:
Here is a streamlined ICS level install script.

By ICS level I mean whatever the recovery is based on.

CWM 6.0 is available in both ICS and JB branches. Streakmod is Donut based.

The branches differ slightly in their syntax and supported code.

The following is thusly only compatable with CWM 6.0/ICS

(the CWM versions I build are all ICS, until I have a solid reason to switch and force script authors to update their scripts)

[COLOR="Red"]# Initial check to see if it's even compatable with current device
assert(getprop("ro.product.device") == "streak" || getprop("ro.build.product") == "streak" ||
getprop("ro.product.device") == "streak5ex" || getprop("ro.build.product") == "streak5ex" ||
getprop("ro.product.device") == "streak5sd8" || getprop("ro.build.product") == "streak5sd8" ||
getprop("ro.product.device") == "streak5sd32" || getprop("ro.build.product") == "streak5sd32");
[/COLOR]

[COLOR="Blue"]# Install label for rom
ui_print(" ");
ui_print(" ");
ui_print(" *****************************************");
ui_print(" * Now Flashing LONGHORN 2.9.3 *");
ui_print(" *****************************************");
ui_print(" ");
[/COLOR]

[COLOR="Lime"]# Formats device depending on current layout
if getprop("ro.product.device") == "streak" || getprop("ro.product.device") == "streak5ex"
then
#{
format("yaffs2", "MTD", "system", "0")
#}
else if getprop("ro.product.device") == "streak5sd8" || getprop("ro.product.device") == "streak5sd32"
then
#{
format("ext4", "EMMC", "/dev/block/innersd0p7", "0")
#}
else
#{
abort("unknown device")
#}
endif; endif;
[/COLOR]

show_progress(0.100000, 0);

[COLOR="Magenta"]# Standard generic mounting and extraction
ui_print(" ");
ui_print("Mounting System! ");
show_progress(0.100000, 0);
run_program("/sbin/busybox", "mount", "/system");
ui_print(" ");
ui_print("Extracting Packages ");
ui_print("This part takes a while! ");
show_progress(0.200000, 0);
package_extract_dir("system", "/system");
[/COLOR]

[COLOR="DarkOrchid"]# Standard symlinking for pre-rooted rom
ui_print(" ");
ui_print("Symlinking Files ");
symlink("toolbox", "/system/bin/cat", "/system/bin/chmod",
"/system/bin/chown", "/system/bin/cmp", "/system/bin/date",
"/system/bin/dd", "/system/bin/df", "/system/bin/dmesg",
"/system/bin/getevent", "/system/bin/getprop", "/system/bin/hd",
"/system/bin/hitop", "/system/bin/id", "/system/bin/ifconfig",
"/system/bin/iftop", "/system/bin/insmod", "/system/bin/ioctl",
"/system/bin/ionice", "/system/bin/kill", "/system/bin/ln",
"/system/bin/log", "/system/bin/ls", "/system/bin/lsmod",
"/system/bin/lsof", "/system/bin/mkdir", "/system/bin/mount",
"/system/bin/mv", "/system/bin/nandread", "/system/bin/netstat",
"/system/bin/newfs_msdos", "/system/bin/notify", "/system/bin/printenv",
"/system/bin/ps", "/system/bin/reboot", "/system/bin/renice",
"/system/bin/rm", "/system/bin/rmdir", "/system/bin/rmmod",
"/system/bin/route", "/system/bin/schedtop", "/system/bin/sendevent",
"/system/bin/setconsole", "/system/bin/setprop", "/system/bin/sleep",
"/system/bin/smd", "/system/bin/start", "/system/bin/stop",
"/system/bin/sync", "/system/bin/top", "/system/bin/umount",
"/system/bin/uptime", "/system/bin/vmstat", "/system/bin/watchprops",
"/system/bin/wipe");
symlink("iwmulticall", "/system/xbin/iwconfig",
"/system/xbin/iwgetid", "/system/xbin/iwlist",
"/system/xbin/iwpriv", "/system/xbin/iwspy");
symlink("busybox", "/system/xbin/[", "/system/xbin/[[",
"/system/xbin/adjtimex", "/system/xbin/arp", "/system/xbin/ash",
"/system/xbin/awk", "/system/xbin/base64", "/system/xbin/basename",
"/system/xbin/bbconfig", "/system/xbin/blkid", "/system/xbin/blockdev",
"/system/xbin/brctl", "/system/xbin/bunzip2", "/system/xbin/bzcat",
"/system/xbin/bzip2", "/system/xbin/cal", "/system/xbin/cat",
"/system/xbin/catv", "/system/xbin/chattr", "/system/xbin/chgrp",
"/system/xbin/chmod", "/system/xbin/chown", "/system/xbin/chroot",
"/system/xbin/clear", "/system/xbin/cmp", "/system/xbin/comm",
"/system/xbin/cp", "/system/xbin/cpio", "/system/xbin/crond",
"/system/xbin/crontab", "/system/xbin/cut", "/system/xbin/date",
"/system/xbin/dc", "/system/xbin/dd", "/system/xbin/depmod",
"/system/xbin/devmem", "/system/xbin/df", "/system/xbin/diff",
"/system/xbin/dirname", "/system/xbin/dmesg", "/system/xbin/dnsd",
"/system/xbin/dos2unix", "/system/xbin/du", "/system/xbin/echo",
"/system/xbin/ed", "/system/xbin/egrep", "/system/xbin/env",
"/system/xbin/expand", "/system/xbin/expr", "/system/xbin/false",
"/system/xbin/fdisk", "/system/xbin/fgrep", "/system/xbin/find",
"/system/xbin/flash_lock", "/system/xbin/flash_unlock",
"/system/xbin/flashcp", "/system/xbin/flock", "/system/xbin/fold",
"/system/xbin/free", "/system/xbin/freeramdisk", "/system/xbin/fsync",
"/system/xbin/ftpget", "/system/xbin/ftpput", "/system/xbin/fuser",
"/system/xbin/getopt", "/system/xbin/grep", "/system/xbin/groups",
"/system/xbin/gunzip", "/system/xbin/gzip", "/system/xbin/halt",
"/system/xbin/head", "/system/xbin/hexdump", "/system/xbin/id",
"/system/xbin/ifconfig", "/system/xbin/insmod", "/system/xbin/install",
"/system/xbin/iostat", "/system/xbin/ip", "/system/xbin/kill",
"/system/xbin/killall", "/system/xbin/killall5", "/system/xbin/length",
"/system/xbin/less", "/system/xbin/ln", "/system/xbin/losetup",
"/system/xbin/ls", "/system/xbin/lsattr", "/system/xbin/lsmod",
"/system/xbin/lsusb", "/system/xbin/lzcat", "/system/xbin/lzma",
"/system/xbin/lzop", "/system/xbin/lzopcat", "/system/xbin/man",
"/system/xbin/md5sum", "/system/xbin/mesg", "/system/xbin/mkdir",
"/system/xbin/mke2fs", "/system/xbin/mkfifo", "/system/xbin/mkfs.ext2",
"/system/xbin/mkfs.vfat", "/system/xbin/mknod", "/system/xbin/mkswap",
"/system/xbin/mktemp", "/system/xbin/modinfo", "/system/xbin/modprobe",
"/system/xbin/more", "/system/xbin/mount", "/system/xbin/mountpoint",
"/system/xbin/mpstat", "/system/xbin/mv", "/system/xbin/nanddump",
"/system/xbin/nandwrite", "/system/xbin/netstat", "/system/xbin/nice",
"/system/xbin/nohup", "/system/xbin/nslookup", "/system/xbin/ntpd",
"/system/xbin/od", "/system/xbin/patch", "/system/xbin/pgrep",
"/system/xbin/pidof", "/system/xbin/ping", "/system/xbin/pkill",
"/system/xbin/pmap", "/system/xbin/poweroff", "/system/xbin/printenv",
"/system/xbin/printf", "/system/xbin/ps", "/system/xbin/pstree",
"/system/xbin/pwd", "/system/xbin/pwdx", "/system/xbin/rdev",
"/system/xbin/readlink", "/system/xbin/realpath", "/system/xbin/renice",
"/system/xbin/reset", "/system/xbin/resize", "/system/xbin/rev",
"/system/xbin/rm", "/system/xbin/rmdir", "/system/xbin/rmmod",
"/system/xbin/route", "/system/xbin/run-parts", "/system/xbin/rx",
"/system/xbin/sed", "/system/xbin/seq", "/system/xbin/setconsole",
"/system/xbin/setserial", "/system/xbin/setsid", "/system/xbin/sh",
"/system/xbin/sha1sum", "/system/xbin/sha256sum",
"/system/xbin/sha512sum", "/system/xbin/sleep", "/system/xbin/sort",
"/system/xbin/split", "/system/xbin/stat", "/system/xbin/strings",
"/system/xbin/stty", "/system/xbin/sum", "/system/xbin/swapoff",
"/system/xbin/swapon", "/system/xbin/sync", "/system/xbin/sysctl",
"/system/xbin/tac", "/system/xbin/tail", "/system/xbin/tar",
"/system/xbin/taskset", "/system/xbin/tee", "/system/xbin/telnet",
"/system/xbin/telnetd", "/system/xbin/test", "/system/xbin/tftp",
"/system/xbin/tftpd", "/system/xbin/time", "/system/xbin/timeout",
"/system/xbin/top", "/system/xbin/touch", "/system/xbin/tr",
"/system/xbin/traceroute", "/system/xbin/true", "/system/xbin/ttysize",
"/system/xbin/tune2fs", "/system/xbin/umount", "/system/xbin/uname",
"/system/xbin/uncompress", "/system/xbin/unexpand", "/system/xbin/uniq",
"/system/xbin/unix2dos", "/system/xbin/unlzma", "/system/xbin/unlzop",
"/system/xbin/unxz", "/system/xbin/unzip", "/system/xbin/uptime",
"/system/xbin/usleep", "/system/xbin/uudecode", "/system/xbin/uuencode",
"/system/xbin/vi", "/system/xbin/watch", "/system/xbin/wc",
"/system/xbin/wget", "/system/xbin/which", "/system/xbin/whoami",
"/system/xbin/xargs", "/system/xbin/xz", "/system/xbin/xzcat",
"/system/xbin/yes", "/system/xbin/zcat");
[/COLOR]

[COLOR="DarkOrange"]# Standard permissions for pre-rooted rom
ui_print(" ");
ui_print("Setting Permissions! ");
show_progress(0.100000, 0);
set_perm_recursive(0, 0, 0755, 0644, "/system");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
set_perm(0, 3003, 02750, "/system/bin/netcfg");
set_perm(0, 3004, 02755, "/system/bin/ping");
set_perm(0, 2000, 06750, "/system/bin/run-as");
set_perm(1000, 1003, 02755, "/system/bin/screenshot");
set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
set_perm(0, 0, 0755, "/system/etc/bluetooth");
set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
set_perm_recursive(0, 0, 0777, 0777, "/system/etc/init.d");
set_perm(0, 0, 0755, "/system/etc/init.d");
set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
set_perm(0, 0, 0544, "/system/etc/install-recovery.sh");
set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
set_perm(0, 0, 06755, "/system/xbin/hcitool");
set_perm(0, 0, 06755, "/system/xbin/librank");
set_perm(0, 0, 06755, "/system/xbin/procmem");
set_perm(0, 0, 06755, "/system/xbin/procrank");
set_perm(0, 0, 06755, "/system/xbin/tcpdump");
set_perm(0, 0, 06755, "/system/xbin/su");
set_perm(0, 0, 0755, "/system/xbin/busybox");
[/COLOR]

[COLOR="DarkRed"]# Selects kernel to install depending on layout
ui_print(" ");
ui_print(" Now Installing Longhorn Balanced Kernel! ");
show_progress(0.100000, 0);

if getprop("ro.product.device") == "streak" || getprop("ro.product.device") == "streak5ex"
then
#{
assert(package_extract_file("boot.img", "/tmp/boot.img"),
write_raw_image("/tmp/boot.img", "boot"),
delete("/tmp/boot.img"));
ui_print("streak or streak5ex")
#}
else if getprop("ro.product.device") == "streak5sd8" || getprop("ro.product.device") == "streak5sd32"
then
#{
assert(package_extract_file("bootsd.img", "/tmp/bootsd.img"),
write_raw_image("/tmp/bootsd.img", "boot"),
delete("/tmp/bootsd.img"));
ui_print("streak5sd8 or streak5sd32")
#}
else
#{
abort("unknown device")
#}
endif; endif;
[/COLOR]

[COLOR="Teal"]# Standard unmount
show_progress(0.100000, 0);
run_program("/sbin/busybox", "umount", "/system");
[/COLOR]

ui_print(" ");
ui_print("And We are DONE! ");
ui_print(" ");
ui_print("Now do a wipe data/Factory Reset and Dell Format! ");

Colors do not represent anything specific, just to make the seperation more obvious.

Always use busybox to mount and unmount standard partitions (ie /cache, /data, /datadata, /system) whenever possible.

Assuming the contents are device-agnostic, this will allow the same mount code to be reused on any device.

Edify mount() requires you to specify the actual geometry to use it (ie the location and filesystem of the partition in question).

I removed the delete() code, I dont know offhand if it's even valid to begin with. If it is it's better to simply delete the files from /system and then package the rom.

I removed the mount(/data) as it wasnt actually doing anything to /firstboot (it wasnt labeled properly)

Reorganized the symlinks to resemble standard ones.

It feels like the combined symlink is faster, you/someone can always do research, but regardless these are the standard ones used on most roms

Permissions are set so that su and busybox will work fine

I dont know if "init.goldfish.sh" is even used, so I didnt touch it, if it isnt used the matching line can be removed

Following that: removed the "installbusybox" script as it's redundant

The script includes all the changes needed to make it compatable with all currently avaliable layouts.

It also contains shortcuts: as LH uses ext4, I combined streak and streak5ex

If the rom didnt use ext4, streak and streak5ex would need seperate kernels otherwise