debian-cd-clone/contrib/testingcds

225 lines
7.7 KiB
Bash

#!/bin/bash
#
# testingcds (c) 2005 Santiago Garcia Mantinan <manty@manty.net>
#
# GPL v2
#
# This file is included here just as an example, it was used when building the
# official testing cds at some point, it was written for a very specific setup
# and then went over a lot of changes during its life, so now this code is
# horrible, hoever some fellows feel it should be included in debian-cd,
# well, I (manty) will leave that on their hands.
#
# The setup we have uses normal debian-cd for daily builds, while it uses a jte
# patched debian-cd for weekly builds, this is done just for speed, the script
# should work with normal debian-cd for all kind of builds just removing -jte
# down there. We are currently just building isos for dailies and jigdos for
# weeklies, no snapshots being generated on the build machine, so I cannot
# waranty that all the code down here works, again, I must stress that you
# should take this just as an example, because part of it is untested and
# the rest is written for a very very specific setup, so... no waranties at all
#
# This is how this script is called for the daily images:
# OMIT_MANUAL=1 NORECOMMENDS=1 NOSUGGESTS=1 COMPLETE=0 INSTALLER_CD=1 TASK=debian-installer MAXISOS=ALL MAXJIGDOS=ALL DI=lenny DI_DIST=lenny ./testingcds "$arch"
# OMIT_MANUAL=1 NORECOMMENDS=1 NOSUGGESTS=1 COMPLETE=0 INSTALLER_CD=2 TASK=debian-installer+kernel MAXISOS=ALL MAXJIGDOS=ALL DI=lenny DI_DIST=lenny ./testingcds "$arch"
# OMIT_MANUAL=1 NORECOMMENDS=1 NOSUGGESTS=1 COMPLETE=0 INSTALLER_CD=1 TASK=debian-installer MAXISOS=ALL MAXJIGDOS=ALL DI=sid DI_WWW_HOME=default DI_DIR="$ARCH_DI_DIR" ./testingcds "$arch"
# 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"
# This is respectively for lenny_d-i businesscards, lenny_d-i netinsts,
# sid_d-i businesscards, and sid_d-i netinsts.
# Where $ARCH_DI_DIR is set to the path for the local mirror of the d-i daily
# built images, this parameter can be omited if no mirror of the images is used
# For the weekly images it is run for normal cds like this:
# DI_DIST=lenny ./testingcds "$arch"
# and for the dvds like this:
# PUBDIRJIG=/path_to_the/dvd INSTALLER_CD=3 DEFBINSIZE=4440 DEFSRCSIZE=4432 DI_DIST=lenny ./testingcds "$arch"
#set -x
CONF=~/build/CONF.sh
export CF=$CONF
# Set up and cleaning
if [ $# -lt 1 ] ; then
echo $0 \$ARCH
echo "variables: PUBDIR[ISO|JIG]"
exit 1
fi
if [ ! "$DATE_BUILD" ] ; then
DATE_BUILD=`/bin/date -u +%Y%m%d`
fi
export ARCH="$1"
NUM_ARCHES=`echo $ARCH | wc -w`
FIRSTARCH=`echo $ARCH | awk '{print $1}'`
if [ ! "$JIGDOFALLBACKURLS" ] ; then
export JIGDOFALLBACKURLS="Debian=http://us.cdimage.debian.org/cdimage/snapshot/Debian/"
fi
# $DI is used to set DI_CODENAME and also to specify the directory for images
if [ "$DI" ] ; then
export DI_CODENAME="$DI"
if [ "$INSTALLER_CD" = "1" -o "$INSTALLER_CD" = "2" ] ; then
PUBDIRJIG="$PUBDIRJIG"/"$DI"_d-i
PUBDIRISO="$PUBDIRISO"/"$DI"_d-i
fi
fi
export LOG="`pwd`/log/"
if [ "$NUM_ARCHES"x = "1"x ] ; then
export OUTARCH=$ARCH
else
export OUTARCH="multiarch"
fi
export RUN="$INSTALLER_CD$DI$OUTARCH$LOGAPPEND"
export LOGFILE="$LOG/$RUN"
case "$INSTALLER_CD" in
1)
export DISKTYPE=BC;;
2|7|8)
export DISKTYPE=NETINST;;
3|6)
export OUT_TYPE=dvd
export DISKTYPE=DVD;;
4)
export DISKTYPE=kde-CD;;
5)
export DISKTYPE=xfce-CD;;
9)
export OUT_TYPE=bd
export DISKTYPE=BD;;
*) export DISKTYPE=CD;;
esac
if [ "$OUT_TYPE"x = ""x ] ; then
OUT_TYPE=cd
fi
export IMAGETARGET=official_images
cd debian-cd && . $CONF
echo Making $ARCH "$DISKTYPE" in $OUT
if [ "$OUT"x = ""x ] ; then
echo Config error
exit 1
fi
if [ "$INSTALLER_CD" = "1" ] ; then
export OFFICIAL="Official BusinessCard Snapshot"
elif [ "$INSTALLER_CD" = "2" ] ; then
export OFFICIAL="Official NetInst Snapshot"
elif [ "$INSTALLER_CD" = "4" ]; then
export OFFICIAL="Official KDE CD Snapshot"
elif [ "$INSTALLER_CD" = "5" ]; then
export OFFICIAL="Official Xfce CD Snapshot"
elif [ "$INSTALLER_CD" = "6" ]; then
export OFFICIAL="Official Multi-Arch DVD"
elif [ "$INSTALLER_CD" = "7" ]; then
export OFFICIAL="Official Multi-Arch Netinst"
elif [ "$INSTALLER_CD" = "8" ]; then
export OFFICIAL="Official Multi-Arch Netinst"
fi
rm -rf "$OUT"
mkdir -p "$OUT"
#mkdir -p "$LOG"
overview_log="$LOG/overview"
overview () {
if [ -e $overview_log ]; then
grep -v " $1 " $overview_log > $overview_log.new
mv $overview_log.new $overview_log
fi
LANG=C echo "$(dpkg --print-architecture) ($(date)) $(whoami)@$(hostname | cut -d . -f 1) $1 $2" >> $overview_log
}
> $LOGFILE
# Do the actual building
if ./build.sh "$ARCH" >>"$LOGFILE" 2>&1 ; then
# if it went ok get things ready for publishing
# we treat the daily netinst images in a different way
if [ "$INSTALLER_CD" = "1" -o "$INSTALLER_CD" = "2" ] ; then
##################################
# NETINST STUFF (ISO ONLY for now)
##################################
# make the dirs we'll use to publish things
TOPDIR="$PUBDIRISO"/$DATE_BUILD/$OUTARCH
mkdir -p $TOPDIR/iso-cd $TOPDIR/jigdo-cd
# put the isos and jigdos in their place
for i in "$OUT"/*-1.iso; do
BASE=`basename $i .iso`
NETINSTNAME=`echo $BASE | sed 's/-BC-1/-businesscard/g;s/-NETINST-1/-netinst/g'`
mv $OUT/$BASE.iso $TOPDIR/iso-cd/$NETINSTNAME.iso
cat $OUT/$BASE.jigdo | \
sed 's/-BC-1/-businesscard/g;s/-NETINST-1/-netinst/g' | \
gzip --best --no-name > $TOPDIR/jigdo-cd/$NETINSTNAME.jigdo
rm $OUT/$BASE.jigdo
mv $OUT/$BASE.template $TOPDIR/jigdo-cd/$NETINSTNAME.template
done
cat $OUT/MD5SUMS >> $TOPDIR/iso-cd/MD5SUMS
cat $OUT/MD5SUMS >> $TOPDIR/jigdo-cd/MD5SUMS
cat $OUT/SHA1SUMS >> $TOPDIR/iso-cd/SHA1SUMS
cat $OUT/SHA1SUMS >> $TOPDIR/jigdo-cd/SHA1SUMS
rm -f "$OUT"/*
else
#######################################
# NORMAL STUFF - full builds (weekly)
#######################################
# finish up the jigdos (compress & move them)
gzip --best --no-name "$OUT"/*.jigdo
for i in "$OUT"/*.jigdo.gz; do
mv $i ${i%.gz}
done
mkdir -p "$PUBDIRJIG"/$OUTARCH/jigdo-${OUT_TYPE}
cat "$OUT"/MD5SUMS >> "$PUBDIRJIG"/$OUTARCH/jigdo-${OUT_TYPE}/MD5SUMS
cat "$OUT"/SHA1SUMS >> "$PUBDIRJIG"/$OUTARCH/jigdo-${OUT_TYPE}/SHA1SUMS
mv "$OUT"/*.template "$PUBDIRJIG"/$OUTARCH/jigdo-${OUT_TYPE}
mv "$OUT"/*.jigdo "$PUBDIRJIG"/$OUTARCH/jigdo-${OUT_TYPE}
mkdir -p "$PUBDIRJIG"/$OUTARCH/iso-${OUT_TYPE}
cat "$OUT"/MD5SUMS >> "$PUBDIRJIG"/$OUTARCH/iso-${OUT_TYPE}/MD5SUMS
cat "$OUT"/SHA1SUMS >> "$PUBDIRJIG"/$OUTARCH/iso-${OUT_TYPE}/SHA1SUMS
mv "$OUT"/*.iso "$PUBDIRJIG"/$OUTARCH/iso-${OUT_TYPE}
date > "$PUBDIRJIG"/$OUTARCH/"$OUT_TYPE"-trace
fi
# Mail the sizes of the images
if [ -e "../.debian-cd.mail" ] ; then
MYEMAIL=`grep -v "^#" "../.debian-cd.mail"`
else
MYEMAIL=`whoami`
fi
for i in $MYEMAIL
do
grep "extents written" "$LOGFILE"|mail -s "testingcds $RUN went ok" "$i"
done
overview "$RUN" success
else
# Run failed
if [ -e "../.debian-cd.mail" ] ; then
MYEMAIL=`grep -v "^#" "../.debian-cd.mail"`
else
MYEMAIL=`whoami`
fi
for i in $MYEMAIL
do
(echo Error when trying to create cds for $RUN ; cat $LOGFILE) | \
mail -s "testingcds $RUN has failed; log included" "$i"
done
overview "$RUN" failed
fi