#!/bin/csh
#
# Create a working chroot for snapshot building
#

source config

set ncpu = `sysctl -n hw.ncpu`
set pushdsilent
set xdate = "date"

# needed for ports 'ex' script execution
#
setenv TERM xterm

echo "`$xdate` - SNAPSHOTS DOBUILD BEGIN"

# Options
#
set nrelease_args = "release"

foreach arg ( $argv )
    switch ( $arg )
    case "realquick":
	set quick = 1
	set realquick = 1
	set nrelease_args = "realquick"
	breaksw
    case "quick":
	set quick = 1
	set nrelease_args = "quick"
	breaksw
    default:
	echo "`$xdate` - Unknown option $arg"
	echo "`$xdate` - SNAPSHOTS DOBUILD END"
 	exit 1
    endsw
end

echo "`$xdate` - Setting up chroot environment"
if ( ! -e $build/root/dev/null ) then
    mount_devfs dummy $build/root/dev
endif

sync; sleep 1
umount $build/root/usr/distfiles >& /dev/null
umount $build/root/usr/src >& /dev/null
umount $build/root/usr/dports >& /dev/null
sync; sleep 1
mount_null $build/distfiles $build/root/usr/distfiles
mount_null $build/src $build/root/usr/src
mount_null $build/dports $build/root/usr/dports

echo "`$xdate` - Build is running nrelease, tail -f $build/nrelease-build.out"
chroot $build/root csh -c "cd /usr/src/nrelease; make -DNOPROFILE -DWITHOUT_SRCS MAKE_JOBS=1 img $nrelease_args" >& $build/nrelease-build.out

if ( $? > 0 ) then
    echo "`$xdate` - NRelease build had a problem, see $build/nrelease-build.out"
    echo "`$xdate` - SNAPSHOTS DOBUILD END"
    exit 1
endif

# Figure out the filename
#
set arch = `uname -p`
if ( "$arch" == "i386" ) then
set kobjs = $build/root/usr/obj/usr/src/sys/GENERIC
else
set kobjs = $build/root/usr/obj/usr/src/sys/X86_64_GENERIC
endif

if ( ! -f $kobjs/vers.txt ) then
    echo "`$xdate` - nrelease build did not generate $kobjs/vers.txt"
    echo "`$xdate` - SNAPSHOTS DOBUILD END"
    exit 1
endif

# Store the snapshots.  Make sure the files are inaccessible until
# completely written out.
#
set basename = `cat $kobjs/vers.txt`
mkdir -p $snapshots/$arch/images
mkdir -p $snapshots/$arch/kernels
set filepath = $snapshots/$arch
umask 077
bzip2 < $build/root/usr/obj/release/dfly.iso > $filepath/images/$basename.iso.bz2
bzip2 < $build/root/usr/obj/release/dfly.img > $filepath/images/$basename.img.bz2
(cd $build/root/usr/obj/release/root; tar cf - boot | bzip2 > $filepath/kernels/$basename.boot.tar.bz2)
chmod 644 $filepath/images/$basename.iso.bz2
chmod 644 $filepath/images/$basename.img.bz2
chmod 644 $filepath/kernels/$basename.boot.tar.bz2
sync
umask 022
pushd $filepath/images
md5 $basename.iso.bz2 >> CHECKSUM.MD5
md5 $basename.img.bz2 >> CHECKSUM.MD5
chmod 644 CHECKSUM.MD5
popd

pushd $filepath/kernels
md5 $basename.boot.tar.bz2 >> CHECKSUM.MD5
chmod 644 CHECKSUM.MD5
popd

# Only adjust the 'latest' softlink shortcuts for
# development snapshots.  Release shortcuts have
# to be done manually.
#
if ( "$relsname" == "DEV" ) then
    pushd $filepath
    rm -f DragonFly-${arch}-LATEST-ISO.iso.bz2.new
    rm -f DragonFly-${arch}-LATEST-IMG.img.bz2.new
    rm -f DragonFly-${arch}-LATEST-BOOT.tar.bz2.new
    ln -s images/$basename.iso.bz2 DragonFly-${arch}-LATEST-ISO.iso.bz2.new
    ln -s images/$basename.img.bz2 DragonFly-${arch}-LATEST-IMG.img.bz2.new
    ln -s kernels/$basename.boot.tar.bz2 DragonFly-${arch}-LATEST-BOOT.tar.bz2.new
    mv -f DragonFly-${arch}-LATEST-ISO.iso.bz2.new \
	    DragonFly-${arch}-LATEST-ISO.iso.bz2
    mv -f DragonFly-${arch}-LATEST-IMG.img.bz2.new \
	    DragonFly-${arch}-LATEST-IMG.img.bz2
    mv -f DragonFly-${arch}-LATEST-BOOT.tar.bz2.new \
	    DragonFly-${arch}-LATEST-BOOT.tar.bz2
    popd
endif

sync; sleep 1
umount $build/root/usr/distfiles >& /dev/null
umount $build/root/usr/src >& /dev/null
umount $build/root/usr/dports >& /dev/null
umount $build/root/dev >& /dev/null

echo "`$xdate` - SNAPSHOTS DOBUILD END"
