#!/bin/bash
#set -x

echo ""
echo "${0}: Started ISO image build at $(date -R)"
ifconfig wlan0 | grep "RX bytes"
echo ""

. ./_build_env

are_you_root

check_build_target "$@"

check_live_build_version

create_pkgrepack_list

mkwmlive_backup

WMLIVEBASEDIR=$(pwd)

export TIMESTAMP=$(date +%Y-%m-%d-%H%M)

for ARCH in $ARCHLIST
do
    echo ""
    echo "${0}: Beginning build of ${ARCH} variant at $(date -R)"
    ifconfig wlan0 | grep "RX bytes"
    echo ""

    WMLIVEPKGLIST="build-config/package-lists/kernel.list.binary"
    rm -vf ${WMLIVEPKGLIST} && \
    grep -v ^# ${WMLIVEPKGLIST}_${ARCH} > ${WMLIVEPKGLIST}
    cp -v ${WMLIVEPKGLIST}_${ARCH} build-config/includes.chroot/root/

    export ISONAME=wmlive_"$TIMESTAMP-"$ARCH""

    if [ "$(echo "$ARCH" | cut -d \- -f1)" = "amd64" ] && [ "$(uname -m)" = "x86_64" ]
    then
        create_pkgs_from_repack_list $ARCH
    elif [ "$(echo "$ARCH" | cut -d \- -f1)" = "i386" ] && [ "$(uname -m)" = "i686" ]
    then
        create_pkgs_from_repack_list $ARCH
    else
        echo Host CPU architecture does not match build ARCH value $ARCH:
        echo Cannot repack debian packages for $ARCH on $(uname -m), needs native install.
        echo This can usually be safely ignored, unless you definitely want this.
        echo ""
    fi

    if [ "$(echo "$ARCH" | cut -d \- -f1)" = "amd64" ]
    then
        PROGARCH="linux-x86_64" && echo PROGARCH is defined as $PROGARCH
    elif [ "$(echo "$ARCH" | cut -d \- -f1)" = "i386" ]
    then
        PROGARCH="linux-i686" && echo PROGARCH is defined as $PROGARCH
    fi

    if [ ! "$PROGARCH" = "" ]
    then
        PROGARCHIVEDIR="$WMLIVEBASEDIR/build-config/wmlive-opt/$PROGARCH"
        PROGEXTRASDIR="$WMLIVEBASEDIR/build-config/includes.binary/"$(echo "$ARCH" | cut -d \- -f1)"/custom"
        cp -av $PROGARCHIVEDIR/* "$PROGEXTRASDIR"
    fi

    cd $WMLIVEBASEDIR

    copy_wmlive_source

    if [ -d wmlive-"$ARCH" ]
    then
        cd wmlive-"$ARCH" && rm -f build-2*.log && lb clean && \
            lb config && \
            time lb build 2>&1 | tee build-"$TIMESTAMP".log && \
        if [ -f live-image-"$ARCH".hybrid.iso ]
        then
            mv -v live-image-"$ARCH".hybrid.iso "$ISONAME".iso
            mv -v build-"$TIMESTAMP".log "$ISONAME".log
            mv -v live-image-"$ARCH".packages "$ISONAME".list
            ls -l "$ISONAME".*
        elif [ -f live-image-"$ARCH" ]
        then
            mv -v live-image-"$ARCH" "$ISONAME".img
            mv -v build-"$TIMESTAMP".log "$ISONAME".log
            mv -v live-image-"$ARCH".packages "$ISONAME".list
            ls -l "$ISONAME".*
        fi
        if [ -s "$ISONAME".iso ]
        then
            mv -v "$ISONAME".* ../..
            lb clean
        else
            echo -e "\n  Something went wrong:"
            echo "  Please check the log file,"
            echo "  and complete the build with"
            echo "  the ./mkbinary script after"
            echo -e "  having fixed the root cause.\n"
        fi
        cd $WMLIVEBASEDIR && rm -vrf "$PROGEXTRASDIR"/*/
        rm -vf build-config/includes.binary/*/sources/wmlive-desktop_*.tar.xz
        rm -vf build-config/binary_debian-installer/additions.tar.gz
        rm -vf ${WMLIVEPKGLIST} build-config/includes.chroot/root/kernel.list.binary_${ARCH} 
    fi
    echo ""
    echo "${0}: Completed build of ${ARCH} variant at $(date -R)"
    ifconfig wlan0 | grep "RX bytes"
    echo ""
done

echo ""
echo "${0}: Finished ISO image build at $(date -R)"
ifconfig wlan0 | grep "RX bytes"
echo ""
