#!/bin/sh

case $PASS in
    ubuntu-server-minimal.ubuntu-server.installer.generic.netboot)
        ;;
    *)
        exit 0
        ;;
esac

set -eux

flavor=generic

KERNEL=${PWD}/livecd.${PROJECT}.kernel-$flavor
INITRD=${PWD}/livecd.${PROJECT}.initrd-$flavor

mkdir -p tarball/$ARCH

case $ARCH in
    s390x)
        cp $INITRD tarball/$ARCH/initrd.ubuntu
        cp $KERNEL tarball/$ARCH/linux.ubuntu
        ;;

    *)
        cp $INITRD tarball/$ARCH/initrd
        cp $KERNEL tarball/$ARCH/linux
        ;;
esac

case $ARCH in
    amd64)
        mv chroot/usr/lib/PXELINUX/pxelinux.0                          tarball/amd64/pxelinux.0
        mv chroot/usr/lib/syslinux/modules/bios/ldlinux.c32            tarball/amd64/ldlinux.c32
	# For shim we're now using alternatives
        if [ -e chroot/usr/lib/shim/shimx64.efi.signed.latest ]; then
            mv chroot/usr/lib/shim/shimx64.efi.signed.latest           tarball/amd64/bootx64.efi
        else
            mv chroot/usr/lib/shim/shimx64.efi.signed                  tarball/amd64/bootx64.efi
        fi
        mv chroot/usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed tarball/amd64/grubx64.efi

        mkdir tarball/amd64/grub tarball/amd64/pxelinux.cfg
        cat > tarball/amd64/grub/grub.cfg.in <<EOF
menuentry "Install Ubuntu Server" {
        set gfxpayload=keep
        linux   linux iso-url=#ISOURL# ip=dhcp ---
        initrd  initrd
}
EOF
        cat > tarball/amd64/pxelinux.cfg/default.in <<EOF
DEFAULT install
LABEL install
  KERNEL linux
  INITRD initrd
  APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp iso-url=#ISOURL# ---
EOF
        ;;

    arm64)
	# For shim we're now using alternatives
        if [ -e chroot/usr/lib/shim/shimaa64.efi.signed.latest ]; then
            mv chroot/usr/lib/shim/shimaa64.efi.signed.latest          tarball/arm64/bootaa64.efi
        else
            mv chroot/usr/lib/shim/shimaa64.efi.signed                 tarball/arm64/bootaa64.efi
        fi
        mv chroot/usr/lib/grub/arm64-efi-signed/grubnetaa64.efi.signed tarball/arm64/grubaa64.efi

        mkdir tarball/arm64/grub
        cat > tarball/arm64/grub/grub.cfg.in <<EOF
menuentry "Install Ubuntu Server" {
        set gfxpayload=keep
        linux   linux iso-url=#ISOURL# ip=dhcp ---
        initrd  initrd
}
EOF
        ;;

    s390x)
        cat > tarball/s390x/ubuntu.exec <<EOF
/* REXX EXEC TO IPL Ubuntu for        */
/* z Systems FROM THE VM READER.      */
/*                                    */
'CP CLOSE RDR'
'PURGE RDR ALL'
'SPOOL PUNCH * RDR'
'PUNCH KERNEL    UBUNTU   * (NOHEADER'
'PUNCH PARMFILE  UBUNTU   * (NOHEADER'
'PUNCH INITRD    UBUNTU   * (NOHEADER'
'CHANGE RDR ALL KEEP NOHOLD'
'CP IPL 000C CLEAR'
EOF
        cat > tarball/s390x/ubuntu.ins <<EOF
* Ubuntu for IBM Z (default kernel)
linux.ubuntu 0x00000000
initrd.off 0x0001040c
initrd.siz 0x00010414
parmfile.ubuntu 0x00010480
initrd.ubuntu 0x01000000
EOF
        cat > tarball/s390x/parmfile.ubuntu.in <<EOF
iso-url=#ISOURL# ---
EOF
        perl -e "print pack('N', 0x1000000)" > tarball/s390x/initrd.off
        perl -e "print pack('N', -s 'tarball/s390x/initrd.ubuntu')" > tarball/s390x/initrd.siz
        cat > tarball/s390x/kvm.cfg.in <<EOF
DEFAULT install
LABEL install
  KERNEL linux.ubuntu
  INITRD initrd.ubuntu
  APPEND ip=dhcp iso-url=#ISOURL# ---
EOF
        cat > tarball/s390x/dpm.cfg.in <<EOF
PROMPT 1
DEFAULT install
TIMEOUT 1
LABEL install
  kernel=linux.ubuntu
  initrd=initrd.ubuntu
  append=ip=dhcp iso-url=#ISOURL# ---
EOF
        ;;
esac

tar -C tarball -czf livecd.${PROJECT}.netboot.tar.gz .
rm -rf tarball