Update the update-cd script for squeeze.

Started off as minor changes, but then also updated how things work in core
logic. We've been making broken over-sized update CDs for a while, as the
code didn't check for being over-full properly. Used to work better when we
had smaller packages, but now it's not working. Change to the method used in
the main debian-cd code: add packages one at a time until we go over, then
remove the last package. Works fine now.
This commit is contained in:
cd-builder user 2011-03-19 21:52:29 +00:00
parent 2f38ab7430
commit b1bdfb8a18
1 changed files with 176 additions and 141 deletions

View File

@ -24,27 +24,26 @@ MIRROR_AMD64=/org/cdbuilder.debian.org/src/ftp/debian-amd64/debian
NONFREE=0
# What release version is this?
VER=4.0r1
VER=6.0.1
# Is this an official CD?
OFFICIAL=Official
# OFFICIAL="Unofficial snapshot"
# Path to use with mkisofs/mkhybrid
#MKISOFS=${MKISOFS:-"mkhybrid"}
MKISOFS=$PWD/../mkisofs/usr/bin/mkisofs
MKISOFS="$PWD/../genisoimage -jigdo-template-compress bzip2 -r -checksum_algorithm_iso md5,sha1,sha256,sha512"
# Use JTE extensions to mkisofs to make jigdo files?
JTE=1
# The working directory to use. MUST be on the same partition as the mirror.
TDIR=/org/cdbuilder.debian.org/src/deb-cd/tmp/etch-update/cd-work
TDIR=/org/cdbuilder.debian.org/src/deb-cd/tmp/squeeze-update/cd-work
# Building etch cd set ...
CODENAME=etch
# Building squeeze cd set ...
CODENAME=squeeze
# Path where the images will be written
OUT=/org/cdbuilder.debian.org/src/deb-cd/tmp/etch-update/cd-out
OUT=/org/cdbuilder.debian.org/src/deb-cd/tmp/squeeze-update/cd-out
# Location(s) for the snapshot(s)
SNAPSHOT='Debian=http://us.cdimage.debian.org/cdimage/snapshot/Debian/ --try-last'
@ -70,10 +69,10 @@ esac
# Location of the diff file to use to determine the changes. If you leave
# this blank, we'll try to determine the changes from the ChangeLog files,
# which is probably less accurate.
DIFF=/home/deb-cd/r0-r1.diff
DIFF=/home/debian-cd/lists/squeeze/r0-r1.diff
if [ "$TYPE" = "cd" ] ; then
CDSIZE=610 # megabytes, leaving space for metadata
CDSIZE=640 # megabytes, leaving space for metadata
else
CDSIZE=4300 # megabytes, leaving space for metadata
fi
@ -89,14 +88,13 @@ VERBOSE=2
GRAB_MD5=$BASEDIR/tools/grab_md5
export VERBOSE BASEDIR SECTS
FIRSTVER=`echo $VER | sed 's?r.*$?r0?g'`
VERSPACE=`echo $VER | sed 's?r? r?g'`
FIRSTVER=`echo $VER | cut -c 1-4`0
CAPCODE=`perl -e "print ucfirst("$CODENAME")"`
export FIRSTVER VERSPACE CAPCODE
export FIRSTVER CAPCODE
if [ "$ARCHLIST"x = ""x ] ; then
ARCHLIST="alpha amd64 arm hppa i386 ia64 mips mipsel powerpc s390 sparc source" # amd64 # all dealt with specially
ARCHLIST="amd64 i386 ia64 mips mipsel powerpc s390 sparc source kfreebsd-amd64 kfreebsd-i386" # amd64 # all dealt with specially
fi
export TDIR NONFREE NONUS VER MIRROR CODENAME OUT BASEDIR
@ -200,17 +198,63 @@ make_cd () {
$OUT/$THISARCH/jigdo-$TYPE/debian-update-$VER-$THISARCH-$TYPEUP-$THISNUM.jigdo \
debian-update-$VER-$THISARCH-$TYPEUP-$THISNUM.iso \
$OUT debian-update-$VER-$THISARCH-$TYPEUP-$THISNUM.template \
"Debian GNU/Linux $VERSPACE - $OFFICIAL $THISARCH $FIRSTVER->$VER update $TYPEUP #$THISNUM"
"Debian GNU/Linux $VER - $OFFICIAL $THISARCH $FIRSTVER->$VER update $TYPEUP #$THISNUM"
echo $SNAPSHOT >> $OUT/$THISARCH/jigdo-$TYPE/debian-update-$VER-$THISARCH-$TYPEUP-$THISNUM.jigdo
# Make sure that the ISO is as new/newer than the jigdo file; #587774
touch $OUT/$THISARCH/iso-$TYPE/debian-update-$VER-$THISARCH-$TYPEUP-$THISNUM.iso
MD5=`cat $OUT/$THISARCH/jigdo-$TYPE/debian-update-$VER-$THISARCH-$TYPEUP-$THISNUM.jigdo | \
awk '/Image Hex MD5Sum/ {print $5}'`
echo "$MD5 debian-update-$VER-$THISARCH-$TYPEUP-$THISNUM.iso" >> $OUT/$THISARCH/jigdo-$TYPE/MD5SUMS.update
echo "$MD5 debian-update-$VER-$THISARCH-$TYPEUP-$THISNUM.iso" >> $OUT/$THISARCH/iso-$TYPE/MD5SUMS.update
for SHA_SIZE in 1 256 512; do
SHA=`cat $OUT/$THISARCH/jigdo-$TYPE/debian-update-$VER-$THISARCH-$TYPEUP-$THISNUM.jigdo | \
awk "/Image Hex SHA${SHA_SIZE}Sum/ {print \\$5}"`
if [ "$SHA"x = ""x ] ; then
echo "SHA fail"
exit 1
fi
echo "$SHA debian-update-$VER-$THISARCH-$TYPEUP-$THISNUM.iso" >> $OUT/$THISARCH/jigdo-$TYPE/SHA${SHA_SIZE}SUMS.update
echo "$SHA debian-update-$VER-$THISARCH-$TYPEUP-$THISNUM.iso" >> $OUT/$THISARCH/iso-$TYPE/SHA${SHA_SIZE}SUMS.update
done
gzip -9 $OUT/$THISARCH/jigdo-$TYPE/debian-update-$VER-$THISARCH-$TYPEUP-$THISNUM.jigdo
mv -v $OUT/$THISARCH/jigdo-$TYPE/debian-update-$VER-$THISARCH-$TYPEUP-$THISNUM.jigdo.gz \
$OUT/$THISARCH/jigdo-$TYPE/debian-update-$VER-$THISARCH-$TYPEUP-$THISNUM.jigdo
else
${MKISOFS} -J -r -V "Debian $VER update $TYPEUP" -o \
$OUT/iso-$TYPE/$CODENAME-update-$THISARCH-$TYPEUP-$THISNUM.iso \
$UPD/CD$CDNUM 2>&1 | grep "extents written"
fi
}
add_file () {
file=$1
case "$THISARCH" in
source)
case "$file" in
*.gz|*.dsc)
copy_file $UPD/CD$CDNUM $file
SRCFILES=$(($SRCFILES + 1))
;;
esac
echo -en "\r$SRCFILES copied"
;;
*)
case "$file" in
*_$THISARCH.deb)
copy_file $UPD/CD$CDNUM $file
ARCHFILES=$(($ARCHFILES + 1))
;;
*_all.deb)
copy_file $UPD/CD$CDNUM $file
ALLFILES=$(($ALLFILES + 1))
;;
esac
echo -en "\r$THISARCH:$ARCHFILES all:$ALLFILES copied"
;;
esac
}
echo Cleaning up
rm -rf $UPD
@ -236,17 +280,18 @@ if [ "$NONFREE"x != "1"x ] ; then
mv -f $UPD/list1 $UPD/list
fi
$GRAB_MD5 $MIRROR_NORM "$ARCHLIST" $CODENAME $CODENAME $UPD/md5-check
if [ "$NONUS"x != ""x ] ; then
$GRAB_MD5 $NONUS "$ARCHLIST" $CODENAME $CODENAME $UPD/md5-check
fi
for THISARCH in $ARCHLIST
do
THISNUM=0
MIRROR=$MIRROR_NORM
rm -f $UPD/md5-check
$GRAB_MD5 $MIRROR $THISARCH $CODENAME $CODENAME $UPD/md5-check
if [ "$NONUS"x != ""x ] ; then
$GRAB_MD5 $NONUS $THISARCH $CODENAME $CODENAME $UPD/md5-check
fi
rm -rf $OUT/$THISARCH/iso-$TYPE $OUT/$THISARCH/jigdo-$TYPE
for file in `cat $UPD/list`
do
@ -268,39 +313,29 @@ do
ALLFILES=0
fi
SIZE_USED=`du -sk $UPD/CD$CDNUM | awk '{print $1}'`
if [ "$BACKOUT_FILE"x != ""x ] ; then
echo "Starting with backed-out file $BACKOUT_FILE"
add_file $BACKOUT_FILE
BACKOUT_FILE=""
fi
add_file $file
SIZE_USED=`du -sk $UPD/CD$CDNUM | awk '{print $1}'`
if [ $SIZE_USED -gt $CDSIZE ] ; then
# Back out the last file added
echo
echo " Overfull: back out $file"
rm -f $UPD/CD$CDNUM/$file
DIR=`dirname $file`
rmdir $DIR > /dev/null 2>&1 || true
BACKOUT_FILE=$file
make_cd $CDNUM $THISNUM $THISARCH $SRCFILES $ARCHFILES $ALLFILES
CDNUM=$(($CDNUM + 1))
continue
fi
case "$THISARCH" in
source)
case "$file" in
*.gz|*.dsc)
copy_file $UPD/CD$CDNUM $file
SRCFILES=$(($SRCFILES + 1))
;;
esac
echo -en "\r$SRCFILES copied"
;;
*)
case "$file" in
*_$THISARCH.deb)
copy_file $UPD/CD$CDNUM $file
ARCHFILES=$(($ARCHFILES + 1))
;;
*_all.deb)
copy_file $UPD/CD$CDNUM $file
ALLFILES=$(($ALLFILES + 1))
;;
esac
echo -en "\r$THISARCH:$ARCHFILES all:$ALLFILES copied"
;;
esac
done
make_cd $CDNUM $THISNUM $THISARCH $SRCFILES $ARCHFILES $ALLFILES
CDNUM=$(($CDNUM + 1))
done