# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

emit_gpt_scripts() {
  local image="$1"
  local dir="$2"

  local pack="$dir/pack_partitions.sh"
  local unpack="$dir/unpack_partitions.sh"

  cat >"$unpack" <<HEADER
#!/bin/bash -eu
# File automatically generated. Do not edit.
TARGET=\${1:-}
if [[ -z "\$TARGET" ]]; then
  echo "Usage: \$0 DEVICE" 1>&2
  exit 1
fi
set -x
HEADER

  $GPT show "$image" | sed -e 's/^/# /' >>"$unpack"
  cp "$unpack" "$pack"

  $GPT show -q "$image" |
    while read start size part x; do
      local file="part_$part"
      local target="\"\$TARGET\""
      local dd_args="bs=512 count=$size"
      echo "dd if=$target of=$file $dd_args skip=$start" >>"$unpack"
      echo "dd if=$file of=$target $dd_args seek=$start conv=notrunc" \
        >>"$pack"
    done

  chmod +x "$unpack" "$pack"
}


build_gpt() {
  local outdev="$1"
  local rootfs_img="$2"
  local stateful_img="$3"
  local esp_img="$4"

  # We'll need some code to put in the PMBR, for booting on legacy BIOS.
  local pmbr_img
  if [ "$ARCH" = "arm" ]; then
    pmbr_img=/dev/zero
  elif [[ "$ARCH" = "x86" || "$ARCH" = "amd64" ]]; then
    pmbr_img=$(readlink -f /usr/share/syslinux/gptmbr.bin)
  else
    error "Unknown architecture: $ARCH"
    return 1
  fi

  GPT_FULL="false"
  [ "${FLAGS_full}" -eq "${FLAGS_TRUE}" ] && GPT_FULL="true"

  # Create the GPT. This has the side-effect of setting some global vars
  # describing the partition table entries (see the comments in the source).
  install_gpt "$outdev" $(numsectors "$rootfs_img") \
    $(numsectors "$stateful_img") $pmbr_img $(numsectors "$esp_img") \
    $GPT_FULL $FLAGS_rootfs_partition_size

  local sudo=
  if [ ! -w "$outdev" ] ; then
    # use sudo when writing to a block device.
    sudo=sudo
  fi

  # Now populate the partitions.
  info "Copying stateful partition..."
  $sudo dd if="$stateful_img" of="$outdev" conv=notrunc bs=512 \
      seek=$START_STATEFUL

  info "Copying rootfs..."
  $sudo dd if="$rootfs_img" of="$outdev" conv=notrunc bs=512 \
      seek=$START_ROOTFS_A

  info "Copying EFI system partition..."
  $sudo dd if="$esp_img" of="$outdev" conv=notrunc bs=512 \
      seek=$START_ESP

  # Pre-set "sucessful" bit in gpt, so we will never mark-for-death
  # a partition on an SDCard/USB stick.
  $GPT add -i 2 -S 1 "$outdev"
}
