#!/bin/bash

export TOPDIR=$(dirname $0)

. $TOPDIR/settings.sh

export PUBDIRJIG=$PUBDIR/weekly-builds
export DATE_BUILD="$DATE-$BUILDNUM"

. $TOPDIR/common.sh

export RSYNC_TARGET=/mnt/nfs-cdimage/weekly-builds

# If we're doing a normal set of daily/weekly builds, leave the
# checksum filenames alone. Otherwise, make life easier for people
# combining things later and append a suitable name as we build.
if [ "$DEBVERSION"x != "testing"x ] ; then
    export SUMS_EXTENSION=".large"
fi

. images4testing_d-i

# Uncomment the following to use daily d-i builds for weekly images
# rather than what's in the archive
USE_DAILY_DI=N

if [ "$USE_DAILY_DI"x = "Y"x ] ; then
    export DI=sid
    export DI_WWW_HOME=default
fi

export DI_DIST
export DI_CODENAME

OMIT_RELEASE_NOTES=0
export OMIT_RELEASE_NOTES

BUILDS_RUNNING=""

if [ "$ARCHES"x = ""x ] ; then
    ARCHES="i386 source amd64 multi powerpc armel hppa ia64 mips mipsel s390 sparc kfreebsd-amd64 kfreebsd-i386"
fi

if lockfile -r0 $TOPDIR/.debian-cd.lock ; then
#    echo "NOT checking for svn updates"
    echo "svn update debian-cd"
    cd debian-cd && svn cleanup; svn up ; cd ..

#    echo "NOT checking for popcon updates"
    cd debian-cd && ./tools/update_popcon tasks/squeeze/popularity-contest ; cd ..

    cd $TOPDIR
    mkdir -p $PUBDIRJIG/trace
    mkdir -p $RSYNC_TARGET

    for arch in $ARCHES; do
        arch_error=""
        if [ "$arch" != multi ] ; then
            rm -rf $PUBDIRJIG/$arch
            mkdir -p $PUBDIRJIG/$arch
            arch_start=`now`

            #export DI_DIR="$ARCH_DI_DIR"

            # Full CD set
            if [ "$NOCD"x = ""x ] && [ "$NOFULLCD"x = ""x ] ; then
                export MAX_PKG_SIZE=500000000
                case $arch in
                    i386|amd64|source)
                        export MAXISOS=ALL; export MAXJIGDOS=ALL ;;
                    powerpc)
                        export MAXISOS=8; export MAXJIGDOS=ALL ;;
                    *)
                        export MAXISOS=3; export MAXJIGDOS=ALL ;;
                esac
                unset DESKTOP
		build_started CD
                ./testingcds "$arch" &
            fi

            # Full DVD set
            if [ "$NODVD"x = ""x ] ; then
                export MAX_PKG_SIZE=999999999999
                case $arch in
                    i386|amd64|source)
                        export MAXISOS=ALL; export MAXJIGDOS=ALL ;;
                    *)
                        export MAXISOS=1; export MAXJIGDOS=ALL ;;
                esac
                export DESKTOP=all
		build_started DVD
                INSTALLER_CD=3 TASK=Debian-all \
                    KERNEL_PARAMS='desktop=all' \
                    ./testingcds "$arch" &
            fi

            # Full BD set
            if [ "$NOBD"x = ""x ] ; then
                export MAX_PKG_SIZE=999999999999
                case $arch in
                    i386|amd64|source)
                        export MAXISOS=0
                        export MAXJIGDOS=ALL
                        export DESKTOP=all
			build_started BD
                        INSTALLER_CD=9 TASK=Debian-all \
                            KERNEL_PARAMS='desktop=all' \
                            ./testingcds "$arch" &
                        ;;
                    *)
                        echo "  Not running BD build for $arch"
                        ;;
                esac
            fi

            # kde and xfce/lxde cds
            if [ "$arch"x != "source"x ] && [ "$NOCD"x = ""x ] ; then
		if [ "$NOKDECD"x = ""x ] ; then
                    export MAX_PKG_SIZE=300000000
                    export DESKTOP=kde
                    export MAXISOS=1; export MAXJIGDOS=1
		    build_started KDECD
                    INSTALLER_CD=4 TASK=Debian-kde \
                        KERNEL_PARAMS='desktop=kde' \
                        MAXCDS=1 MAXISOS=ALL MAXJIGDOS=ALL \
                        ./testingcds "$arch" &
		fi

		if [ "$NOLIGHTCD"x = ""x ] ; then
                    export MAX_PKG_SIZE=300000000
                    export DESKTOP=light
                    export MAXISOS=1; export MAXJIGDOS=1
		    build_started LIGHTCD
                    INSTALLER_CD=B TASK=Debian-light \
			KERNEL_PARAMS='desktop=light' \
			MAXCDS=1 MAXISOS=ALL MAXJIGDOS=ALL \
			./testingcds "$arch" &
		fi
            fi

	    catch_parallel_builds

            if [ "$NOSYNC"x = ""x ] ; then
                if [ "$arch_error"x = "none"x ] ; then
                    echo "  Running ~/build/iso_run $PUBDIRJIG/ $RSYNC_TARGET/ $arch &"
                    ~/build/iso_run $PUBDIRJIG/ $RSYNC_TARGET/ $arch &
                else
                    ~/build/report_build_error $RSYNC_TARGET $arch "$arch_error"
                fi
            fi
        else # multi
            rm -rf $PUBDIRJIG/multi-arch
            for i in iso-dvd jigdo-dvd; do
                mkdir -p $PUBDIRJIG/multi-arch/$i
            done

            if [ "$NODVD"x = ""x ] ; then
                export MAX_PKG_SIZE=999999999999
                export DESKTOP=all
		build_started DVD
                INSTALLER_CD=6 TASK=Debian-all \
                    KERNEL_PARAMS='desktop=all' \
                    MAXCDS=1 MAXISOS=ALL MAXJIGDOS=ALL \
		    VARIANTS=xen \
                    ./testingcds "i386 amd64 source"
                # We don't do multi in parallel, only one build type
                # to do!
                build_finished $arch $BUILDNAME $DVDSTART

                mv $PUBDIRJIG/multi/jigdo-dvd/debian* $PUBDIRJIG/multi-arch/jigdo-dvd
                for file in $PUBDIRJIG/multi/jigdo-dvd/*SUMS$SUMS_EXTENSION; do
                    outfile=$PUBDIRJIG/multi-arch/jigdo-dvd/`basename $file`
                    cat $file >> $outfile
                done

                mv $PUBDIRJIG/multi/iso-dvd/debian* $PUBDIRJIG/multi-arch/iso-dvd
                for file in $PUBDIRJIG/multi/iso-dvd/*SUMS$SUMS_EXTENSION; do
                    outfile=$PUBDIRJIG/multi-arch/iso-dvd/`basename $file`
                    cat $file >> $outfile
                done

                rm -rf $PUBDIRJIG/multi
            fi

            if [ "$NOSYNC"x = ""x ] ; then
                if [ "$arch_error"x = "none"x ] || [ "$arch_error"x = ""x ] ; then
                    echo "  Running ~/build/iso_run $PUBDIRJIG/ $RSYNC_TARGET/ multi-arch &"
                    ~/build/iso_run $PUBDIRJIG/ $RSYNC_TARGET/ multi-arch &
                else
                    ~/build/report_build_error $RSYNC_TARGET multi-arch "$arch_error"
                fi
            fi
        fi # end of multi

        # Reset envvars for next iteration
        unset DESKTOP
    done

    if [ "$NOFW"x = ""x ] ; then
	~/build/generate_firmware_images squeeze
	~/build/generate_firmware_images sid
    fi
    
    if [ "$NOSNAP"x = ""x ] ; then
        ~/bin/weekly-snapshots
    fi

    date -u > $PUBDIRJIG/trace/cdimage.debian.org

    rm -f $TOPDIR/.debian-cd.lock
fi
