chiark / gitweb /
cec013105a917d3b145241f6ab9db745cbf582cb
[bin.git] / ubuntu-daily
1 #! /bin/sh
2
3 PROJECT=
4 CURRENT_DIST=natty
5 DIST="$CURRENT_DIST"
6 BASE=cdimage.ubuntu.com::cdimage
7 RSYNC=false
8 HTTP=false
9
10 usage () {
11         cat <<EOF
12 Usage: $0 [options] image_type architecture
13
14 Options:
15   -f|--flavour FLAVOUR          Flavour (default: ubuntu).
16   -d|--dist DIST                Distribution (default: natty).
17   -a|--authenticated            Use privileged access.
18   -r|--rsync                    Force rsync.
19   -h|--http                     Force HTTP only (no reuse).
20 EOF
21 }
22
23 eval set -- "$(getopt -o f:d:arh -l help,flavour:,dist:,authenticated,rsync,http -- "$@")" || { usage >&2; exit 2; }
24 while :; do
25         case $1 in
26                 --help)
27                         usage
28                         exit 0
29                         ;;
30                 -f|--flavour)
31                         PROJECT="$2"
32                         if [ "$PROJECT" = ubuntu ]; then
33                                 PROJECT=
34                         fi
35                         shift 2
36                         ;;
37                 -d|--dist)
38                         DIST="$2"
39                         shift 2
40                         ;;
41                 -a|--authenticated)
42                         BASE=antimony:cdimage/www/full
43                         shift
44                         ;;
45                 -r|--rsync)
46                         RSYNC=:
47                         shift
48                         ;;
49                 -h|--http)
50                         HTTP=:
51                         shift
52                         ;;
53                 --)     shift; break ;;
54                 *)      usage >&2; exit 2;
55         esac
56 done
57
58 if $HTTP; then
59         BASE="http://cdimage.ubuntu.com"
60 fi
61
62 case $2 in
63         hppa*|ia64*|lpia*|powerpc*|sparc*)
64                 PREFIX=ports/
65                 ;;
66         *)
67                 PREFIX=
68                 ;;
69 esac
70 if [ "$DIST" != "$CURRENT_DIST" ]; then
71         PREFIX="$DIST/$PREFIX"
72 fi
73 case $1 in
74         server)
75                 PREFIX="ubuntu-server/$PREFIX"
76                 ;;
77         jeos)
78                 PREFIX="jeos/$PREFIX"
79                 ;;
80         mid)
81                 PREFIX="ubuntu-mid/$PREFIX"
82                 ;;
83 esac
84 case $1 in
85         live|desktop|mid)
86                 IMAGE_TYPE=${IMAGE_TYPE:-${PREFIX}daily-live}
87                 ;;
88         dvd)
89                 IMAGE_TYPE=${IMAGE_TYPE:-${PREFIX}dvd}
90                 ;;
91         *)
92                 IMAGE_TYPE=${IMAGE_TYPE:-${PREFIX}daily}
93                 ;;
94 esac
95 case $1 in
96         mid)
97                 EXTENSION=img
98                 ;;
99         *)
100                 EXTENSION=iso
101                 ;;
102 esac
103
104 case $1 in
105         install|alternate|server|addon|serveraddon|dvd) ;;
106         *)
107                 $HTTP || RSYNC=:
108                 ;;
109 esac
110
111 LOCAL="./${PROJECT:+$PROJECT-}$DIST-$1-$2"
112 REMOTE="$BASE/${PROJECT:+$PROJECT/}$IMAGE_TYPE/current/$DIST-$1-$2"
113
114 if $RSYNC; then
115         ionice -c2 -n7 rsync -avP "$REMOTE.$EXTENSION" "$LOCAL.$EXTENSION"
116 elif $HTTP; then
117         wget -O "$LOCAL.$EXTENSION" "$REMOTE.$EXTENSION"
118 else
119         rsync -avP "$REMOTE.jigdo" "$LOCAL.jigdo"
120         if [ "$PROJECT" ]; then
121                 sed -i "s/=$DIST-$1-$2/=$PROJECT-$DIST-$1-$2/g" "$LOCAL.jigdo"
122         fi
123         rsync -avP "$REMOTE.template" "$LOCAL.template"
124         EXISTING=false
125         if [ -e "$LOCAL.iso" ]; then
126                 EXISTING=:
127                 mv "$LOCAL.iso" "$LOCAL.iso.old"
128                 mkdir -p "old-$2"
129                 sudo mount -o loop "$LOCAL.iso.old" "old-$2"
130         fi
131         ionice -c2 -n7 jigdo-lite "$LOCAL.jigdo"
132         if $EXISTING; then
133                 sudo umount "old-$2" || true
134                 rm -f "$LOCAL.iso.old"
135         fi
136 fi