1#!/bin/bash
2
3set -e
4
5if [ "$#" -ne 1 ]; then
6    echo "$0 path-to-system.img | path-to-vendor.img" >&2
7    exit 1
8fi
9
10srcimg=$1
11if [[ ! -f "$srcimg" ]]; then
12    echo "$0: '${srcimg}' does not exist"
13    exit 1
14fi
15
16base_srcimg=`basename $srcimg`
17label="${base_srcimg%.*}"
18dir_name=$(dirname $srcimg)
19target=${dir_name}/$label-qemu.img
20
21#check if $srcimg is sparse
22magic="3aff26ed"
23src_magic=`xxd -p -l 4 $srcimg`
24
25if [[ $src_magic == $magic ]]; then
26echo "Unsparsing ${srcimg}"
27tmpfile=$(mktemp -t unsparse_image.XXXXXX)
28${SIMG2IMG:-simg2img} $srcimg $tmpfile > /dev/null 2>&1
29srcimg="$tmpfile"
30fi
31
32dd if=/dev/zero of=$target ibs=1024k count=1 > /dev/null 2>&1
33dd if=$srcimg of=$target conv=notrunc,sync ibs=1024k obs=1024k seek=1 > /dev/null 2>&1
34unamestr=`uname`
35curdisksize=$(stat -c %s $target)
36
37dd if=/dev/zero of=$target conv=notrunc bs=1 count=1024k seek=$curdisksize > /dev/null 2>&1
38
39disksize=`expr $curdisksize + 1024 \* 1024 `
40
41end=`expr $disksize \/ 512 - 2048 - 1`
42${SGDISK:-sgdisk} --clear $target > /dev/null 2>&1
43${SGDISK:-sgdisk} --new=1:2048:$end --type=1:8300 --change-name=1:$label $target > /dev/null 2>&1
44
45if [[ -e $tmpfile ]]; then
46rm $tmpfile
47fi
48