X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~cjwatson/git?p=bin.git;a=blobdiff_plain;f=ubuntu-daily;h=43d56e76316f1f11d6a7ca0265ef60cad71563bf;hp=d1143228264790d474bf73a7a1b9779620ef5572;hb=241d32c3a03c0004ff163d3cacdcbcc6cf7820d2;hpb=77332b1f0a00064becd3b702a2c2d5220b57103b diff --git a/ubuntu-daily b/ubuntu-daily index d114322..43d56e7 100755 --- a/ubuntu-daily +++ b/ubuntu-daily @@ -1,10 +1,11 @@ #! /bin/sh PROJECT= -CURRENT_DIST=maverick +CURRENT_DIST=oneiric DIST="$CURRENT_DIST" -BASE=antimony:cdimage/www/full +BASE=cdimage.ubuntu.com::cdimage RSYNC=false +HTTP=false usage () { cat <&2; exit 2; } +eval set -- "$(getopt -o f:d:arh -l help,flavour:,dist:,authenticated,rsync,http -- "$@")" || { usage >&2; exit 2; } while :; do case $1 in --help) @@ -36,27 +38,28 @@ while :; do DIST="$2" shift 2 ;; - -a|--anonymous) - BASE=cdimage.ubuntu.com::cdimage + -a|--authenticated) + BASE=antimony:cdimage/www/full shift ;; -r|--rsync) RSYNC=: shift ;; + -h|--http) + HTTP=: + shift + ;; --) shift; break ;; *) usage >&2; exit 2; esac done -case $2 in - hppa*|ia64*|lpia*|powerpc*|sparc*) - PREFIX=ports/ - ;; - *) - PREFIX= - ;; -esac +if $HTTP; then + BASE="http://cdimage.ubuntu.com" +fi + +PREFIX= if [ "$DIST" != "$CURRENT_DIST" ]; then PREFIX="$DIST/$PREFIX" fi @@ -92,9 +95,9 @@ case $1 in esac case $1 in - install|alternate|server|addon|serveraddon|dvd) ;; + install|alternate|server|addon|serveraddon) ;; *) - RSYNC=: + $HTTP || RSYNC=: ;; esac @@ -103,22 +106,57 @@ REMOTE="$BASE/${PROJECT:+$PROJECT/}$IMAGE_TYPE/current/$DIST-$1-$2" if $RSYNC; then ionice -c2 -n7 rsync -avP "$REMOTE.$EXTENSION" "$LOCAL.$EXTENSION" +elif $HTTP; then + wget -O "$LOCAL.$EXTENSION" "$REMOTE.$EXTENSION" else rsync -avP "$REMOTE.jigdo" "$LOCAL.jigdo" if [ "$PROJECT" ]; then sed -i "s/=$DIST-$1-$2/=$PROJECT-$DIST-$1-$2/g" "$LOCAL.jigdo" fi rsync -avP "$REMOTE.template" "$LOCAL.template" + + mkdir -p old + EXISTING=false + MOUNTS= + + do_mount () { + mkdir -p "old/$1" + MOUNTS="${MOUNTS:+$MOUNTS }$1" + sudo mount -o loop,ro "$1" "old/$1" + } + + cleanup () { + trap - EXIT HUP INT QUIT TERM + + local mount + + for mount in $MOUNTS; do + sudo umount "old/$mount" + rmdir -p --ignore-fail-on-non-empty "old/$mount" + done + + if $EXISTING; then + rm -f "$LOCAL.iso.old" + fi + } + trap cleanup EXIT HUP INT QUIT TERM + if [ -e "$LOCAL.iso" ]; then EXISTING=: mv "$LOCAL.iso" "$LOCAL.iso.old" - mkdir -p "old-$2" - sudo mount -o loop "$LOCAL.iso.old" "old-$2" - fi - ionice -c2 -n7 jigdo-lite "$LOCAL.jigdo" - if $EXISTING; then - sudo umount "old-$2" || true - rm -f "$LOCAL.iso.old" + do_mount "$LOCAL.iso.old" fi + + for iso in *"$DIST"-*.iso; do + case $iso in + *-install-*|*-alternate-*|*-server-*|*-addon-*|*-serveraddon-*) ;; + *) + continue + ;; + esac + do_mount "$iso" + done + + ionice -c2 -n7 jigdo-lite --scan "$PWD/old" "$LOCAL.jigdo" fi