#!/bin/bash -eux
case $ARCH in
    ppc64el|powerpc)
        ;;
    *)
        exit 0
        ;;
esac

IMAGE_STR="# CLOUD_IMG: This file was created/modified by the Cloud Image build process"
FS_LABEL="cloudimg-rootfs"

. config/binary

. config/functions

create_partitions() {
    disk_image="$1"
    sgdisk "${disk_image}" \
        --zap-all
    sgdisk "${disk_image}" \
        --new=2::+8M \
        --new=1:
    sgdisk "${disk_image}" -t 2:4100
    sgdisk "${disk_image}" \
        --print
}

install_grub() {
    mkdir mountpoint
    mount_partition "${rootfs_dev_mapper}" mountpoint

    chroot mountpoint apt-get -qqy update
    chroot mountpoint apt-get -qqy install grub-ieee1275
    chroot mountpoint apt-get -qqy remove --purge grub-legacy-ec2
    chroot mountpoint apt-get autoremove --purge --assume-yes

    # set the kernel commandline to use hvc0
    mkdir -p mountpoint/etc/default/grub.d
    cat << EOF > mountpoint/etc/default/grub.d/50-cloudimg-settings.cfg
${IMAGE_STR}

# Set the recordfail timeout
GRUB_RECORDFAIL_TIMEOUT=0

# Do not wait on grub prompt
GRUB_TIMEOUT=0

# Set the default commandline
GRUB_CMDLINE_LINUX_DEFAULT="console=hvc0 earlyprintk"
EOF
    prep_partition="${loop_device}p2"
    chroot mountpoint grub-install "${prep_partition}" \
        --no-nvram \
        --boot-directory=/boot \
        --target=powerpc-ieee1275

    divert_grub mountpoint
    chroot mountpoint update-grub
    replace_grub_root_with_label mountpoint
    undivert_grub mountpoint

    umount_partition mountpoint
    rmdir mountpoint
}

disk_image=binary/boot/disk.ext4

create_empty_disk_image "${disk_image}"
create_partitions "${disk_image}"
mount_image "${disk_image}" 1

# Copy the chroot in to the disk
make_ext4_partition "${rootfs_dev_mapper}"
mkdir mountpoint
mount "${rootfs_dev_mapper}" mountpoint
cp -a chroot/* mountpoint/

# the image has been modified from its disk-image-uefi base so the manifest and filelist should be regenerated
chroot mountpoint dpkg-query -W > binary/boot/filesystem.packages
(cd mountpoint && find -xdev) | sort > binary/boot/filesystem.filelist

umount mountpoint
rmdir mountpoint

install_grub

clean_loops
trap - EXIT