#! /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 <<EOF
Options:
-f|--flavour FLAVOUR Flavour (default: ubuntu).
- -d|--dist DIST Distribution (default: maverick).
- -a|--anonymous Don't use privileged access.
+ -d|--dist DIST Distribution (default: oneiric).
+ -a|--authenticated Use privileged access.
-r|--rsync Force rsync.
+ -h|--http Force HTTP only (no reuse).
EOF
}
-eval set -- "$(getopt -o f:d:ar -l help,flavour:,dist:,anonymous,rsync -- "$@")" || { usage >&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)
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
esac
case $1 in
- install|alternate|server|addon|serveraddon|dvd) ;;
+ install|alternate|server|addon|serveraddon) ;;
*)
- RSYNC=:
+ $HTTP || RSYNC=:
;;
esac
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