#!/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 if [ "$BUILDNUM"x = ""x ]; then BUILDNUM=1 fi export DATE_BUILD="$DATE-$BUILDNUM" export TESTING_SUITE=${CODENAME} 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=${OUT_BASE}/daily-builds export RSYNC_TARGET_FIRMWARE=${OUT_BASE}/unofficial/non-free/cd-including-firmware/daily-builds else echo "Don't support release builds of dailies! Use cronjob.weekly instead" exit 1 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_SID $OUT_FW_SID; do # $OUT_FREE_TST $OUT_FW_TST 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 DATESTRING=`date -u` case $ARCH_ISO_DIR in *firmware*) FIRMWARE="firmware" INFILE=$TOPDIR/daily-firmware.html;; *) FIRMWARE="" INFILE=$TOPDIR/daily.html;; esac sed "s/ARCH/$ARCH/g;s/DATE/$DATESTRING/g;s/BUILDNUM/$BUILDNUM/g;s/CODENAME/$CODENAME/g" \ $INFILE > $ARCH_DIR/HEADER.html generate_checksums_for_arch $ARCH $ARCH_JIGDO_DIR ~/build.${CODENAME}/generate_headers ~/build.${CODENAME}/HEADER.html.in $ARCH_DIR $ARCH $FIRMWARE cd $ARCH_DIR echo "Signing checksums files using the automatic key" ~/build.${CODENAME}/sign-images $OUT_DIR $ARCH ~/build.${CODENAME}/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_SID $OUT_FW_SID; do # $OUT_FREE_TST $OUT_FW_TST mkdir -p ${OUT_DIR}/${arch}/iso-cd ${OUT_DIR}/${arch}/jigdo-cd done if [ "$arch" = "multi-arch" ] ; then if $(arch_has_firmware $arch) ; then export FORCE_CD_SIZE1=CD700 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 \ EXCLUDE_686_PAE_KERNEL=1 \ TASK=debian-installer+kernel LOGAPPEND="-1" \ MAXISOS=ALL MAXJIGDOS=ALL \ DI=sid DI_DIST="$DI_DIST" \ DI_DIR="$ARCH_DI_DIR" \ 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 \ EXCLUDE_686_PAE_KERNEL=1 \ TASK=debian-installer+kernel LOGAPPEND="-1" \ MAXISOS=ALL MAXJIGDOS=ALL \ DI=${TESTING_SUITE} DI_DIST="$DI_DIST" \ ./testingcds "amd64 i386" & fi fi unset FORCE_CD_SIZE1 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 \ EXCLUDE_686_PAE_KERNEL=1 \ TASK=debian-installer+kernel LOGAPPEND="-1" \ MAXISOS=ALL MAXJIGDOS=ALL \ DI=sid DI_DIST="$DI_DIST" \ DI_DIR="$ARCH_DI_DIR" \ 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 \ EXCLUDE_686_PAE_KERNEL=1 \ TASK=debian-installer+kernel LOGAPPEND="-1" \ MAXISOS=ALL MAXJIGDOS=ALL \ DI=${TESTING_SUITE} DI_DIST="$DI_DIST" \ ./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" ] || [ "$arch" = "amd64" ] ; 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 # Special debian-edu builds, only minor tweaks. #846006 if [ "$NOEDU"x = ""x ] ; then if [ "$arch" = "i386" ] || [ "$arch" = "amd64" ] ; then if [ "$SID_WANTED" = "1" ] ; then if [ "$NI_WANTED" = "1" ] ; then build_started SIDEDUNI OMIT_RELEASE_NOTES=1 OMIT_MANUAL=1 NORECOMMENDS=1 \ NOSUGGESTS=1 COMPLETE=0 INSTALLER_CD=G \ CDNAME=debian-edu \ DI=sid DI_WWW_HOME=default \ DEBIAN_EDU=1 \ KERNEL_PARAMS="modules=debian-edu-install-udeb" \ DESKTOP=xfce VARIANTS=xen \ EXCLUDE=debian-edu-exclude \ UDEB_EXCLUDE="$BASEDIR"/data/$CODENAME/udeb_exclude \ TASK=Debian-edu-netinst \ MAXISOS=1 MAXJIGDOS=1 \ DI=${DI} DI_DIST=${DI} \ DI_DIR="$ARCH_DI_DIR" \ ./testingcds "$arch" & build_started SIDEDUNIFIRMWARE OMIT_RELEASE_NOTES=1 OMIT_MANUAL=1 NORECOMMENDS=1 \ NOSUGGESTS=1 COMPLETE=0 INSTALLER_CD=H \ FORCE_FIRMWARE=1 \ CDNAME=firmware-edu \ DI=sid DI_WWW_HOME=default \ DEBIAN_EDU=1 \ KERNEL_PARAMS="modules=debian-edu-install-udeb" \ DESKTOP=xfce VARIANTS=xen \ EXCLUDE=debian-edu-exclude \ UDEB_EXCLUDE="$BASEDIR"/data/$CODENAME/udeb_exclude \ TASK=Debian-edu-netinst \ MAXISOS=1 MAXJIGDOS=1 \ DI=${DI} DI_DIST=${DI} \ DI_DIR="$ARCH_DI_DIR" \ ./testingcds "$arch" & fi fi if [ "$TESTING_WANTED" = "1" ] ; then if [ "$NI_WANTED" = "1" ] ; then build_started TESTINGEDUNI OMIT_RELEASE_NOTES=1 OMIT_MANUAL=1 NORECOMMENDS=1 \ NOSUGGESTS=1 COMPLETE=0 INSTALLER_CD=G \ CDNAME=debian-edu \ DEBIAN_EDU=1 \ KERNEL_PARAMS="modules=debian-edu-install-udeb" \ DESKTOP=xfce VARIANTS=xen \ EXCLUDE=debian-edu-exclude \ UDEB_EXCLUDE="$BASEDIR"/data/$CODENAME/udeb_exclude \ TASK=Debian-edu-netinst \ MAXISOS=1 MAXJIGDOS=1 \ DI=${TESTING_SUITE} DI_DIST="$DI_DIST" \ ./testingcds "$arch" & build_started TESTINGEDUNIFIRMWARE OMIT_RELEASE_NOTES=1 OMIT_MANUAL=1 NORECOMMENDS=1 \ NOSUGGESTS=1 COMPLETE=0 INSTALLER_CD=H \ FORCE_FIRMWARE=1 \ CDNAME=firmware-edu \ DEBIAN_EDU=1 \ KERNEL_PARAMS="modules=debian-edu-install-udeb" \ DESKTOP=xfce VARIANTS=xen \ EXCLUDE=debian-edu-exclude \ UDEB_EXCLUDE="$BASEDIR"/data/$CODENAME/udeb_exclude \ TASK=Debian-edu-netinst \ MAXISOS=1 MAXJIGDOS=1 \ DI=${TESTING_SUITE} DI_DIST="$DI_DIST" \ ./testingcds "$arch" & fi 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 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 -rHlt $PUBDIRJIG/ $RSYNC_TARGET_FREE/ echo "Sync firmware builds across to output dir: $RSYNC_TARGET_FIRMWARE" rsync -rHlt $PUBDIRJIG-firmware/ $RSYNC_TARGET_FIRMWARE/ echo "Remove extra builds:" ~/bin/remove_extra_dailies echo "$DATE-$BUILDNUM" > $RSYNC_TARGET_FREE/daily-trace if [ $(hostname) = casulana ]; then (cd ${RSYNC_TARGET_FREE}/sid_d-i/${DATE_BUILD} && find . -name '*.iso' > .iso-wanted) (cd ${RSYNC_TARGET_FIRMWARE}/sid_d-i/${DATE_BUILD}/ && find . -name '*.iso' > .iso-wanted) rsync_to_pettersson ${RSYNC_TARGET_FREE}/sid_d-i/${DATE_BUILD}/ \ daily-builds/sid_d-i/${DATE_BUILD}/ \ '--exclude *.iso' publish_on_pettersson daily-builds/sid_d-i/${DATE_BUILD} rsync_to_pettersson ${RSYNC_TARGET_FIRMWARE}/sid_d-i/${DATE_BUILD}/ \ unofficial/non-free/cd-including-firmware/daily-builds/sid_d-i/${DATE_BUILD}/ \ '--exclude *.iso' publish_on_pettersson unofficial/non-free/cd-including-firmware/daily-builds/sid_d-i/${DATE_BUILD} rsync_to_pettersson ${OUT_BASE}/cd-sources/ cd-sources/ publish_on_pettersson cd-sources fi fi cd $TOPDIR rm -f $BUILDLOCK fi