#!/bin/bash
set -x
# Build a custom UEFI linux based PBA image
## define releases for tools
. conf
VERSIONINFO=`git describe --dirty` || VERSIONINFO=downloaded
BUILDTYPE=$1
BUILDIMG=UEFI64_${1}-${VERSIONINFO}.img
if [ "$BUILDTYPE" == "Debug" ] || [ "$BUILDTYPE" == "Release" ] ; then
            echo "Building " $BUILDTYPE "image"
	else
	    echo "You must select Debug|Release"
	    exit		
fi


## check that everything is available
[ -f scratch/${SYSLINUX}/efi64/efi/syslinux.efi -a \
  -f scratch/${SYSLINUX}/efi64/com32/elflink/ldlinux/ldlinux.e64 -a \
     -f ../LinuxPBA/dist/${BUILDTYPE}_x86_64/GNU-Linux/linuxpba -a \
     -f ../linux/CLI/dist/${BUILDTYPE}_x86_64/GNU-Linux/sedutil-cli -a \
      -f scratch/buildroot/PBA64/images/bzImage  -a \
      -f buildroot/syslinux.cfg \
  ] || { echo " prereqs are not available "; exit 1; }
# recreate the initrd file with the latest PBA
mkdir scratch/buildroot/PBA64/overlay/sbin/
cp ../LinuxPBA/dist/${BUILDTYPE}_x86_64/GNU-Linux/linuxpba  scratch/buildroot/PBA64/overlay/sbin/linuxpba
cp ../linux/CLI/dist/${BUILDTYPE}_x86_64/GNU-Linux/sedutil-cli  scratch/buildroot/PBA64/overlay/sbin/sedutil-cli
cd scratch/buildroot
make all O=PBA64 2>&1 >PBA64.log
cd ../..
# Start fresh
sudo rm -rf UEFI64_${BUILDTYPE} ; mkdir UEFI64_${BUILDTYPE} ; cd UEFI64_${BUILDTYPE}
# make an image file
dd if=/dev/zero of=${BUILDIMG} bs=1M count=7
(echo "n";echo "";echo "";echo "";echo "ef00";echo w;echo Y) | gdisk ${BUILDIMG}

LOOPDEV=`sudo losetup --show -f -o 1048576 ${BUILDIMG}`
sudo mkfs.vfat $LOOPDEV -n UEFI64_${BUILDTYPE}
sudo mkdir image
sudo mount $LOOPDEV image
sudo chmod 777 image
sudo mkdir -p image/EFI/boot
sudo cp ../scratch/${SYSLINUX}/efi64/efi/syslinux.efi image/EFI/boot/bootx64.efi
sudo cp ../scratch/${SYSLINUX}/efi64/com32/elflink/ldlinux/ldlinux.e64 image/EFI/boot/
sudo cp ../scratch/buildroot/PBA64/images/bzImage image/EFI/boot/
sudo cp ../scratch/buildroot/PBA64/images/rootfs.cpio.xz image/EFI/boot/
sudo cp ../buildroot/syslinux.cfg image/EFI/boot/
sudo umount image
sudo losetup -d $LOOPDEV
gzip ${BUILDIMG}
