#!/bin/sh
#
#       <FAIL-SCRIPT>
#
#       Script called in the event that a postinstall (chroot) script fails
#
#       Copyright 2008-2010 Dell Inc.
#           Mario Limonciello <Mario_Limonciello@Dell.com>
#           Hatim Amro <Hatim_Amro@Dell.com>
#           Michael E Brown <Michael_E_Brown@Dell.com>
#
#       This program is free software; you can redistribute it and/or modify
#       it under the terms of the GNU General Public License as published by
#       the Free Software Foundation; either version 2 of the License, or
#       (at your option) any later version.
#
#       This program is distributed in the hope that it will be useful,
#       but WITHOUT ANY WARRANTY; without even the implied warranty of
#       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#       GNU General Public License for more details.
#
#       You should have received a copy of the GNU General Public License
#       along with this program; if not, write to the Free Software
#       Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#       MA 02110-1301, USA.

# BE AWARE THAT THIS SCRIPT IS CALLED FROM OUTSIDE THE CHROOT.
# The OS is mounted under $TARGET

. /usr/share/dell/scripts/fifuncs "target"

set -x
set -e

IFHALT "(FAIL) Clean-Up .."

if [ "$BOOTDEV" = "$TARGETDEV" ]; then
    #cleanup potentially stale mount points
    for mountpoint in $MOUNT_CLEANUP;
    do
        umount -l $mountpoint
    done

    if [ -d "/isodevice" ]; then
        RP="/isodevice"
    else
        RP="/cdrom"
    fi
    mount -o remount,rw $RP
    fistlog="/tmp/fist.err"

    if [ -f $RP/SDR ]; then
        dualos=`sed -n '/DUALOS/=' $RP/SDR`
        if [ $dualos ]; then
            fistlog="/tmp/DUALOS_FIST.ERR"
        fi
    fi

    IFHALT "Resetting grub fail state"
    [ -s $RP/factory/grubenv ] || rm -f $RP/factory/grubenv
    grub-editenv $RP/factory/grubenv set recordfail=1

    # create a dmesg.log file to record the dmesg info
    touch $TARGET/$LOG/dmesg.log 2>&1
    chattr +a $TARGET/$LOG/dmesg.log
    dmesg >> $TARGET/$LOG/dmesg.log

    if [ -x /dell/fist/tal ]; then
        IFHALT "Reporting logs to DMP"
        cp -f $TARGET/$LOG/chroot.sh.log $fistlog
        /dell/fist/tal PutFiles $fistlog
        /dell/fist/tal PutFiles "$TARGET/$LOG/dmesg.log"
        sync
    elif [ ! -d /sys/firmware/efi ]; then
        grub-setup -d $RP/factory $BOOTDEV
    fi

    #If we have another script to run, do it
    if [ -f /cdrom/scripts/chroot-scripts/FAIL-SCRIPT ]; then
        IFHALT "(FAIL) Report to logs.. Done!"
        /cdrom/scripts/chroot-scripts/FAIL-SCRIPT
    fi

fi

IFHALT "(FAIL) Clean-Up.. Done!"
