debian-cd-clone/contrib/cronjob.daily

301 lines
9.2 KiB
Bash
Executable File

#!/bin/bash
TOPDIR=$(dirname $0)
if [ "$TOPDIR" = "." ] ; then
TOPDIR=`pwd`
fi
export TOPDIR
. $TOPDIR/settings.sh
BUILDLOCK=$HOME/.debian-cd.lock
export PUBDIRJIG=$PUBDIR/daily-builds
export DATE_BUILD="$DATE-$BUILDNUM"
export TESTING_SUITE=jessie
BUILDS_RUNNING=""
export NI_WANTED=1
export TESTING_WANTED=0
if [ "$RELEASE_BUILD"x = ""x ] ; then
export SID_WANTED=1
export OUT_FREE_TST=${PUBDIRJIG}/${TESTING_SUITE}_d-i/${DATE_BUILD}
export OUT_FW_TST=${PUBDIRJIG}-firmware/${TESTING_SUITE}_d-i/${DATE_BUILD}
export OUT_FREE_SID=${PUBDIRJIG}/sid_d-i/${DATE_BUILD}
export OUT_FW_SID=${PUBDIRJIG}-firmware/sid_d-i/${DATE_BUILD}
export RSYNC_TARGET_FREE=/mnt/nfs-cdimage/daily-builds
export RSYNC_TARGET_FIRMWARE=/mnt/nfs-cdimage/unofficial/non-free/cd-including-firmware/daily-builds
else
export SID_WANTED=0
export TESTING_WANTED=1
export OUT_FREE_TST=${PUBDIRJIG}-$RELEASE_BUILD
export OUT_FW_TST=${PUBDIRJIG}-$RELEASE_BUILD-firmware
export OUT_FREE_SID=""
export OUT_FW_SID=""
export RSYNC_TARGET_FREE=/mnt/nfs-cdimage/.${RELEASE_BUILD}
export RSYNC_TARGET_FIRMWARE=/mnt/nfs-cdimage/unofficial/non-free/cd-including-firmware/.${RELEASE_BUILD}
export CONF=~/build.jessie/CONF.sh.${RELEASE_BUILD}
export RELEASE_BUILD=$RELEASE_BUILD
export EXTENSION=".small"
fi
. $TOPDIR/common.sh
# Make sure the machine isn't rebooted while we're busy
reboot_lock
finalise_arch_dir () {
ARCH=$1
for OUT_DIR in $OUT_FREE_TST $OUT_FW_TST $OUT_FREE_SID $OUT_FW_SID; do
ARCH_DIR=$OUT_DIR/$ARCH
# Only keep things / do any work here if there are any files in the ARCH_DIR
NUM_FILES=`find $ARCH_DIR -type f | wc -l`
if [ $NUM_FILES = 0 ] ; then
rm -rf $ARCH_DIR
else
ARCH_ISO_DIR=${ARCH_DIR}/iso-cd
ARCH_JIGDO_DIR=${ARCH_DIR}/jigdo-cd
if [ "$RELEASE_BUILD"x = ""x ] ; then
DATESTRING=`date -u`
case $ARCH_ISO_DIR in
*firmware*)
INFILE=$TOPDIR/daily-firmware.html;;
*)
INFILE=$TOPDIR/daily.html;;
esac
sed "s/ARCH/$ARCH/g;s/DATE/$DATESTRING/g;s/BUILDNUM/$BUILDNUM/g;s/INST_VER/$INST_VER/g" \
$INFILE > $ARCH_DIR/HEADER.html
fi
generate_checksums_for_arch $ARCH $ARCH_JIGDO_DIR
cd $ARCH_DIR
# Only make torrent files for release builds
if [ "$RELEASE_BUILD"x != ""x ] ; then
~/build.jessie/mktorrent iso-cd/*iso
cp iso-cd/*SUMS* bt-cd
fi
if [ "$RELEASE_BUILD"x = ""x ] ; then
echo "Signing checksums files using the automatic key"
~/build.jessie/sign-images $OUT_DIR $ARCH
fi
~/build.jessie/mklist iso-cd/*iso
cd $TOPDIR
fi
done
}
cd $TOPDIR &&
if lockfile -r0 $BUILDLOCK ; then
# echo "NOT checking for git updates"
echo "git update debian-cd"
cd debian-cd && git pull ; cd ..
cd $TOPDIR
. images4testing_d-i
# Allow desktop selection in isolinux menu for i386 and amd64
# For other arches this is a harmless no-op
export DESKTOP=all
export KERNEL_PARAMS="desktop=all"
for arch in $ARCHES; do
# We don't do source daily builds
if [ "$arch" = "source" ] ; then
continue
fi
rm -rf $PUBDIRJIG/$arch
arch_error=""
arch_start=`now`
for OUT_DIR in $OUT_FREE_TST $OUT_FW_TST $OUT_FREE_SID $OUT_FW_SID; do
mkdir -p ${OUT_DIR}/${arch}/iso-cd ${OUT_DIR}/${arch}/jigdo-cd
done
if [ "$arch" = "multi-arch" ] ; then
if $(arch_has_firmware $arch) ; then
if [ "$SID_WANTED" = "1" ] ; then
if [ "$NI_WANTED" = "1" ] ; then
build_started SIDNIFIRMWARE
OMIT_RELEASE_NOTES=1 OMIT_MANUAL=1 NORECOMMENDS=1 \
NOSUGGESTS=1 COMPLETE=0 INSTALLER_CD=C \
FORCE_FIRMWARE=1 CDNAME=firmware \
TASK=debian-installer+kernel LOGAPPEND="-1" \
MAXISOS=ALL MAXJIGDOS=ALL \
DI=sid DI_DIST="$DI_DIST" VARIANTS=xen \
DI_WWW_HOME=default ./testingcds "amd64 i386" &
fi
fi
if [ "$TESTING_WANTED" = "1" ] ; then
if [ "$NI_WANTED" = "1" ] ; then
build_started TESTINGNIFIRMWARE
OMIT_RELEASE_NOTES=1 OMIT_MANUAL=1 NORECOMMENDS=1 \
NOSUGGESTS=1 COMPLETE=0 INSTALLER_CD=C \
FORCE_FIRMWARE=1 CDNAME=firmware \
TASK=debian-installer+kernel LOGAPPEND="-1" \
MAXISOS=ALL MAXJIGDOS=ALL \
DI=${TESTING_SUITE} DI_DIST="$DI_DIST" VARIANTS=xen \
./testingcds "amd64 i386" &
fi
fi
fi
if [ "$SID_WANTED" = "1" ] ; then
if [ "$NI_WANTED" = "1" ] ; then
build_started SIDNI
OMIT_RELEASE_NOTES=1 OMIT_MANUAL=1 NORECOMMENDS=1 \
NOSUGGESTS=1 COMPLETE=0 INSTALLER_CD=2 \
TASK=debian-installer+kernel LOGAPPEND="-1" \
MAXISOS=ALL MAXJIGDOS=ALL \
DI=sid DI_DIST="$DI_DIST" VARIANTS=xen \
DI_WWW_HOME=default ./testingcds "amd64 i386" &
fi
fi
if [ "$TESTING_WANTED" = "1" ] ; then
if [ "$NI_WANTED" = "1" ] ; then
build_started TESTINGNI
OMIT_RELEASE_NOTES=1 OMIT_MANUAL=1 NORECOMMENDS=1 \
NOSUGGESTS=1 COMPLETE=0 INSTALLER_CD=2 \
TASK=debian-installer+kernel LOGAPPEND="-1" \
MAXISOS=ALL MAXJIGDOS=ALL \
DI=${TESTING_SUITE} DI_DIST="$DI_DIST" VARIANTS=xen \
./testingcds "amd64 i386" &
fi
fi
catch_parallel_builds
rm -rf $PUBDIRJIG/$arch
if [ "$arch_error"x = "none"x ] ; then
finalise_arch_dir $arch
fi
else # end of m-a
if $(arch_has_firmware $arch) ; then
if [ "$SID_WANTED" = "1" ] ; then
if [ "$NI_WANTED" = "1" ] ; then
build_started SIDNIFIRMWARE
OMIT_RELEASE_NOTES=1 OMIT_MANUAL=1 NORECOMMENDS=1 \
FORCE_FIRMWARE=1 CDNAME=firmware \
NOSUGGESTS=1 COMPLETE=0 INSTALLER_CD=C \
TASK=debian-installer+kernel MAXISOS=ALL MAXJIGDOS=ALL \
DI=sid DI_WWW_HOME=default DI_DIR="$ARCH_DI_DIR" \
./testingcds "$arch" &
fi
fi
if [ "$TESTING_WANTED" = "1" ] ; then
if [ "$NI_WANTED" = "1" ] ; then
build_started TESTINGNIFIRMWARE
OMIT_RELEASE_NOTES=1 OMIT_MANUAL=1 NORECOMMENDS=1 \
FORCE_FIRMWARE=1 CDNAME=firmware \
NOSUGGESTS=1 COMPLETE=0 INSTALLER_CD=C \
TASK=debian-installer+kernel MAXISOS=ALL MAXJIGDOS=ALL \
DI=${TESTING_SUITE} DI_DIST="$DI_DIST" \
./testingcds "$arch" &
fi
fi
fi
if [ "$SID_WANTED" = "1" ] ; then
if [ "$NI_WANTED" = "1" ] ; then
build_started SIDNI
OMIT_RELEASE_NOTES=1 OMIT_MANUAL=1 NORECOMMENDS=1 \
NOSUGGESTS=1 COMPLETE=0 INSTALLER_CD=2 \
TASK=debian-installer+kernel MAXISOS=ALL MAXJIGDOS=ALL \
DI=sid DI_WWW_HOME=default DI_DIR="$ARCH_DI_DIR" \
./testingcds "$arch" &
fi
fi
if [ "$TESTING_WANTED" = "1" ] ; then
if [ "$NI_WANTED" = "1" ] ; then
build_started TESTINGNI
OMIT_RELEASE_NOTES=1 OMIT_MANUAL=1 NORECOMMENDS=1 \
NOSUGGESTS=1 COMPLETE=0 INSTALLER_CD=2 \
TASK=debian-installer+kernel MAXISOS=ALL MAXJIGDOS=ALL \
DI=${TESTING_SUITE} DI_DIST="$DI_DIST" \
./testingcds "$arch" &
fi
fi
# Special Mac-only builds
if [ "$arch" = "i386" ] ; then
if [ "$SID_WANTED" = "1" ] ; then
if [ "$NI_WANTED" = "1" ] ; then
build_started SIDMACNI
OMIT_RELEASE_NOTES=1 OMIT_MANUAL=1 NORECOMMENDS=1 \
NOSUGGESTS=1 COMPLETE=0 INSTALLER_CD=F \
TASK=debian-installer+kernel MAXISOS=ALL MAXJIGDOS=ALL \
BOOT_METHODS=BIOS CDNAME="debian-mac" \
DI=sid DI_WWW_HOME=default DI_DIR="$ARCH_DI_DIR" \
./testingcds "$arch" &
fi
fi
if [ "$TESTING_WANTED" = "1" ] ; then
if [ "$NI_WANTED" = "1" ] ; then
build_started TESTINGMACNI
OMIT_RELEASE_NOTES=1 OMIT_MANUAL=1 NORECOMMENDS=1 \
NOSUGGESTS=1 COMPLETE=0 INSTALLER_CD=F \
TASK=debian-installer+kernel MAXISOS=ALL MAXJIGDOS=ALL \
BOOT_METHODS=BIOS CDNAME="debian-mac" \
DI=${TESTING_SUITE} DI_DIST="$DI_DIST" \
./testingcds "$arch" &
fi
fi
fi
catch_parallel_builds
rm -rf $PUBDIRJIG/$arch
if [ "$arch_error"x = "none"x ] ; then
finalise_arch_dir $arch
fi
fi # end of normal arch build
done
if [ "$NOSYNC"x = ""x ] ; then
if [ "$RELEASE_BUILD"x = ""x ] ; then
echo "Clean up old builds on build machine:"
for DIR in $PUBDIRJIG/* $PUBDIRJIG-firmware/* ; do
cd $DIR
for THIS in 20* ; do
if [ $THIS != $DATE-$BUILDNUM ] ; then
echo " Deleting $DIR/$THIS"
rm -rf $DIR/$THIS
fi
done
done
echo "Sync normal builds across to output dir: $RSYNC_TARGET_FREE"
rsync -rHltv $PUBDIRJIG/ $RSYNC_TARGET_FREE/
echo "Remove extra builds for normal dailies:"
~/bin/remove_extra_dailies $RSYNC_TARGET_FREE "$ARCHES"
echo "Sync firmware builds across to output dir: $RSYNC_TARGET_FIRMWARE"
rsync -rHltv $PUBDIRJIG-firmware/ $RSYNC_TARGET_FIRMWARE/
echo "Remove extra builds for firmware dailies:"
~/bin/remove_extra_dailies $RSYNC_TARGET_FIRMWARE "$ARCHES_FIRMWARE"
echo "$DATE-$BUILDNUM" > $RSYNC_TARGET_FREE/daily-trace
else # Release build
echo "Sync normal builds for $RELEASE_BUILD across to output dir: $RSYNC_TARGET_FREE"
rsync -rHltv $OUT_FREE_TST/ $RSYNC_TARGET_FREE/
echo "Sync firmware builds for $RELEASE_BUILD across to output dir: $RSYNC_TARGET_FIRMWARE"
rsync -rHltv $OUT_FW_TST/ $RSYNC_TARGET_FIRMWARE/
fi
fi
cd $TOPDIR
rm -f $BUILDLOCK
fi