support boot.img and recovery.img (#4)

support boot.img and recovery.img
pull/5/head
cfig 9 years ago committed by GitHub
parent b27994ec46
commit 6cd1026891

@ -4,17 +4,13 @@ apply plugin: 'java'
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.lang.RuntimeException;
import java.util.zip.GZIPInputStream; import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream; import java.util.zip.GZIPOutputStream;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
def workdir='build/unzip_boot' // ----------------------------------------------------------------------------
def defaultRootDir = workdir + "/root"
String[] bins = [ "sh", "logcat", "logd", "linker", "toolbox", "toybox", "applypatch_static" ]
String[] libs = [ "libdl.so", "libutils.so", "libc++.so", "libc.so", "libm.so", "libcutils.so", "libselinux.so", "liblog.so", "libpcre.so", "libsysutils.so", "libnl.so", "libbase.so", "libbacktrace.so", "libunwind.so" ]
boolean gDebug=true
model { model {
buildTypes { buildTypes {
release release
@ -50,6 +46,26 @@ model {
} }
} }
// ----------------------------------------------------------------------------
// global
// ----------------------------------------------------------------------------
def workdir='build/unzip_boot'
def defaultRootDir = workdir + "/root"
String[] bins = [ "sh", "logcat", "logd", "linker", "toolbox", "toybox", "applypatch" ]
String[] libs = [ "libdl.so", "libutils.so", "libc++.so", "libc.so", "libm.so", "libz.so", "libstdc++.so", "libcutils.so", "libselinux.so", "liblog.so", "libpcre.so", "libsysutils.so", "libnl.so", "libbase.so", "libbacktrace.so", "libunwind.so" ]
boolean gDebug=true
String activeImg = null;
if (new File("boot.img").exists()) {
activeImg = "boot.img";
} else if (new File("recovery.img").exists()) {
activeImg = "recovery.img";
}
println("Active image target: " + activeImg);
// ----------------------------------------------------------------------------
// tasks
// ----------------------------------------------------------------------------
task unpack_bootimg(type: Exec, dependsOn: 'abootimgExecutable') { task unpack_bootimg(type: Exec, dependsOn: 'abootimgExecutable') {
doFirst { doFirst {
def rootdir = new File(workdir) def rootdir = new File(workdir)
@ -60,7 +76,7 @@ task unpack_bootimg(type: Exec, dependsOn: 'abootimgExecutable') {
} }
workingDir '.' workingDir '.'
executable 'build/exe/abootimg/abootimg' executable 'build/exe/abootimg/abootimg'
args = ['-x', 'boot.img', workdir+'/bootimg.cfg', workdir+'/kernel', workdir+'/ramdisk.img.gz'] args = ['-x', activeImg, workdir+'/bootimg.cfg', workdir+'/kernel', workdir+'/ramdisk.img.gz']
} }
task unpack_ramdisk_gz << { task unpack_ramdisk_gz << {
@ -82,8 +98,9 @@ task unpack_cpio(type: Exec, dependsOn: unpack_ramdisk_gz) {
} }
task unpack(type: Delete, dependsOn: unpack_cpio) { task unpack(type: Delete, dependsOn: unpack_cpio) {
delete workdir + "/ramdisk.img.gz" description "extract boot.img or recovery.img"
delete workdir + "/ramdisk.img" delete workdir + "/ramdisk.img.gz"
delete workdir + "/ramdisk.img"
} }
task pack_ramdisk_and_gz { Task task -> task pack_ramdisk_and_gz { Task task ->
@ -123,10 +140,7 @@ task pack_clear(type: Exec, dependsOn: [pack_ramdisk_and_gz, 'mkbootimgExecutabl
'--ramdisk', workdir + "/ramdisk.img.gz", '--ramdisk', workdir + "/ramdisk.img.gz",
'--cmdline', theCmdLine, '--cmdline', theCmdLine,
'--base', theBaseAddr, '--base', theBaseAddr,
'--output', 'boot.img.clear'] '--output', activeImg + '.clear']
}
if (!new File(workdir + "/bootimg.cfg").exists()) {
pack_clear.enabled = false;
} }
void unGnuzipFile(String compressedFile, String decompressedFile) throws IOException { void unGnuzipFile(String compressedFile, String decompressedFile) throws IOException {
@ -226,7 +240,7 @@ task pack(type: JavaExec, dependsOn: [pack_clear, 'boot_signer:jar']) {
main = 'com.android.verity.BootSignature' main = 'com.android.verity.BootSignature'
classpath = files("boot_signer/build/libs/boot_signer.jar") classpath = files("boot_signer/build/libs/boot_signer.jar")
maxHeapSize '512m' maxHeapSize '512m'
args '/boot','boot.img.clear', 'security/verity.pk8', 'security/verity.x509.pem', 'boot.img.signed' args '/boot', activeImg + '.clear', 'security/verity.pk8', 'security/verity.x509.pem', activeImg + '.signed'
} }
task _setup(type: Copy) { task _setup(type: Copy) {
@ -271,12 +285,20 @@ void RunFunc(String inCmd, String inWorkdir = null) {
} }
void updateBootImage() { void updateBootImage() {
String flashTarget = "/dev/block/by-name/" + System.getProperty("img", "boot") String flashTarget = null;
switch (activeImg) {
case "boot.img":
flashTarget = "/dev/block/by-name/boot";
break;
case "recovery.img":
flashTarget = "/dev/block/by-name/recovery";
break;
}
Run("adb root") Run("adb root")
Run("adb push boot.img.signed /cache/") Run("adb push " + activeImg + ".signed /cache/")
List<String> cmd2 = ["adb", "shell", "dd if=/cache/boot.img.signed of=" + flashTarget]; List<String> cmd2 = ["adb", "shell", "dd if=/cache/" + activeImg + ".signed of=" + flashTarget];
Run(cmd2) Run(cmd2)
cmd2 = ["adb", "shell", "rm -f /cache/boot.img.signed"]; cmd2 = ["adb", "shell", "rm -f /cache/" + activeImg + ".signed"];
Run(cmd2) Run(cmd2)
} }
@ -312,7 +334,7 @@ void updateLinks(String inWorkdir) {
} }
task debug(dependsOn: ['addSystemBin', 'addSystemLib']) { task debug(dependsOn: ['addSystemBin', 'addSystemLib']) {
description "add debug tools into recovery rootfs" description "add debug tools into recovery rootfs from ANDROID_PRODUCT_OUT"
doLast { doLast {
updateLinks(workdir); updateLinks(workdir);
} }
@ -342,3 +364,18 @@ boolean inTargetList(String file, String[] inArray) {
} }
return false; return false;
} }
// ----------------------------------------------------------------------------
// post configs
// ----------------------------------------------------------------------------
if (null == activeImg) {
pack.enabled = false
unpack.enabled = false
unpack_cpio.enabled = false
unpack_bootimg.enabled = false
unpack_ramdisk_gz.enabled = false
}
if (!new File(workdir + "/bootimg.cfg").exists()) {
pack_clear.enabled = false;
}

Loading…
Cancel
Save