#!/bin/sh

set -e

# Make sure the copied files are readable by all
umask 022

TFTPDIR=/var/lib/tftpboot/
TFTPBOOT=$TFTPDIR/ltsp
test -z "$LTSPROOT" && LTSPROOT=/opt/ltsp
VENDOR=$(lsb_release -i -s)

if [ ! -d $TFTPBOOT ] ; then
    echo "error: Directory $TFTPBOOT is missing.  Unable to continue"
    exit 1
fi

ALL_CHROOTS="$@"
ALL_CHROOTS=${ALL_CHROOTS:-"$(find $LTSPROOT -mindepth 1 -maxdepth 1 -type d)"}

if [ -z "$BOOTPROMPT_OPTS" ]; then
    if [ "$VENDOR" = "Ubuntu" ]; then
        BOOTPROMPT_OPTS="quiet splash"
    else 
        BOOTPROMPT_OPTS="root=/dev/nfs ip=dhcp"
    fi
fi

for CHROOT in $ALL_CHROOTS ; do
    if [ -x $CHROOT/bin/true ]; then
        echo "Updating tftp directories for chroot: $CHROOT"
        # check for compatible (i.e. chrootable) architecture
        if chroot $CHROOT /bin/true ; then
            # update kernels for the chroot
            if [ -x "$CHROOT/usr/lib/ltsp/update-kernels" ]; then
                chroot "$CHROOT" /usr/lib/ltsp/update-kernels
            fi
        fi

        EXTRA_FILES=""
        CHROOT_NAME="$(basename $CHROOT)"
        TFTP_CHROOT="$TFTPBOOT/$CHROOT_NAME"
        mkdir -p $TFTP_CHROOT

        if [ -f $CHROOT/usr/lib/yaboot/yaboot ]; then
            cp -a -v $CHROOT/usr/lib/yaboot/yaboot $TFTPDIR
            cat > $TFTPDIR/yaboot.conf <<EOF
timeout=0
default=ltsp
root=/dev/ram

image=/ltsp/$CHROOT_NAME/vmlinux
        label=ltsp
        initrd=/ltsp/$CHROOT_NAME/initrd.img
        append="$BOOTPROMPT_OPTS"
EOF
        else
            echo "Skipping yaboot configuration. install yaboot package if you need it."
        fi    

        if [ -f $CHROOT/usr/lib/syslinux/pxelinux.0 ]; then
            PXECFG=$TFTP_CHROOT/pxelinux.cfg
            cp $CHROOT/usr/lib/syslinux/pxelinux.0 $TFTP_CHROOT
            if [ ! -d $PXECFG ]; then
                mkdir $PXECFG
            fi
            if [ -z "$PXELINUX_CMDLINE" ]; then
                PXELINUX_CMDLINE="DEFAULT vmlinuz ro initrd=initrd.img $BOOTPROMPT_OPTS"
            fi
            cat > $PXECFG/default <<EOF
$PXELINUX_CMDLINE
EOF
 
        else
            echo "Skipping PXE configuration.  Install the syslinux package if you need it."
        fi

        for file in $CHROOT/boot/vmlinu* $CHROOT/boot/initrd.img* $CHROOT/boot/nbi*.img* $EXTRA_FILES ; do
            if [ -f "$file" ]; then
                cp -a -v "$file" $TFTP_CHROOT
            fi
        done
    else
        # not a valid chroot
        echo "Skipping invalid chroot: $CHROOT"
    fi
done
