3 [ $# -eq 1 ] || { echo "must give version"; exit 1; }
7 if [ "$1" = "daily" ]; then
13 ARCHES="${ARCHES:-i386 x86_64 arm powerpc aarch64 ppc64 ppc64le}"
14 KVER="3.19.0-20.20~14.04.1"
15 ME=$(readlink -f "$0")
20 local url="$1" target="$2" tfile="" t=""
21 [ -f "$target" ] && return
22 t=$(dirname "$target")
23 tfile=$(mktemp "$t/.${0##*/}.XXXXXX") || return
24 wget "$url" -O "$tfile" &&
25 mv "$tfile" "$target" ||
26 { t=$?; rm -f "$tfile"; return $t; }
29 echo "$@" >> "$LOGFILE"
33 # logevent(msg, [from])
34 # log the message in $1 and time since $2, defaulting to last call.
35 local up delta msg="$1" ref="$2"
37 if [ "$ref" = "-" ]; then
39 elif [ "$ref" = "" ]; then
42 if [ -n "$ref" ]; then
45 msg "$(date -R)" "$msg" "${delta:+[${delta}s]}"
50 error() { echo "$@" 1>&2; }
51 fail() { [ $# -eq 0 ] || error "$@"; exit 1; }
56 out="$PWD/../build-$VER"
57 LOGFILE="$out/date.txt"
58 export TMPDIR="$out/tmp"
59 mkdir -p "$out" "$TMPDIR"
61 # really just here to check that VER is a tag
62 # or source code checkout would fail
64 revno=$(bzr tags -r "tag:$VER") || fail "$VER: not a tag in $PWD."
65 revno=$(echo "$revno" | awk '{print $2}')
71 logevent "start download" -
74 ln -snf ../download download
75 brtgz="buildroot-${BR_VER}.tar.gz"
76 dl "http://buildroot.uclibc.org/downloads/$brtgz" "download/$brtgz"
77 logevent "end download"
79 logevent "start unpack" -
80 rm -Rf "buildroot-${BR_VER}"
82 tar -xvf download/buildroot-${BR_VER}.tar.gz
83 ln -snf buildroot-${BR_VER} buildroot
85 # we do not do this here, so that we're not dependent on the
86 # cvs working (which wont work through http_proxy) and also
87 # to have revision controlled information in that file.
88 #./bin/mkcabundle > src/etc/ssl/certs/ca-certificates.crt
90 ( cd buildroot && QUILT_PATCHES="$PWD/../patches-buildroot" quilt push -a )
92 echo "$VER" > "src/etc/cirros/version"
95 logevent "start br-source" -
96 make ARCH=i386 br-source
97 logevent "end br-source"
99 logevent "start kernel download" -
100 grab-kernels "$KVER" ${ARCHES}
101 logevent "end kernel download"
103 for arch in ${ARCHES}; do
104 logevent "start $arch" -
105 time make ARCH=$arch "OUT_D=$out/build/$arch" \
106 ${CCACHE_D:+"BR2_CCACHE_DIR=${CCACHE_D}/$arch"} 2>&1 |
107 tee "$out/build-$arch.log";
109 logevent "finish $arch [ret=$ret]"
112 for arch in ${ARCHES}; do
113 mkdir -p "$out/stage/$arch"
116 logevent "start bundling" -
117 for arch in ${ARCHES}; do
119 powerpc|ppc*|aarch64) size=64M;;
122 sudo ./bin/bundle -v ${size:+--size=$size} --arch="$arch" \
123 "$out/build/$arch/rootfs.tar" \
124 ./download/kernel-$arch.deb "$out/stage/$arch";
126 logevent "finish bundling"
128 sudo chown -R $USER:$USER "$out/stage"
130 mkdir -p "$out/release"
132 #srctgz="$out/release/cirros-$VER-source.tar.gz"
133 #bzr export -r "tag:$VER" --format=tgz --root="cirros-$VER" "$srctgz"
134 #echo "wrote source tgz: $srctgz"
136 ( srcd="$PWD" && tmpd=$(mktemp -d) && cd "$tmpd" &&
137 bzr branch "$srcd" -r tag:$VER cirros-$VER &&
138 rm -Rf cirros-$VER/.bzr &&
139 echo "$VER" > "cirros-$VER/src/etc/cirros/version" &&
140 tar cvzf - cirros-$VER ) > "$out/release/cirros-$VER-source.tar.gz"
143 rm -f "$out/stage"/*/"$pre"*
144 for arch in ${ARCHES}; do
146 ( cd "$out/stage/$arch" &&
147 ln kernel $p-vmlinuz && ln kernel $p-kernel &&
148 ln initramfs $p-initrd && ln initramfs $p-initramfs &&
149 ln part.img $p-rootfs.img &&
150 ln blank.img $p-blank.img &&
151 ln disk.img $p-disk.img &&
152 ln filesys.tar.gz $p-lxc.tar.gz &&
156 logevent "start populating release" -
157 for arch in ${ARCHES}; do
159 ( cd "$out/stage/$arch" &&
160 cp $p-kernel $p-initramfs $p-lxc.tar.gz "$out/release/" &&
161 gzip -9 -c $p-rootfs.img > $out/release/$p-rootfs.img.gz ) &&
162 ( cd "$out/stage/$arch" &&
163 tar cvzf - $p-blank.img $p-vmlinuz $p-initrd ) > \
164 "$out/release/$p-uec.tar.gz"
165 [ "$arch" = "arm" ] ||
166 cp "$out/stage/$arch/$p-disk.img" "$out/release/$p-disk.img"
169 mkdir -p "$out/release/buildroot_rootfs"
170 for arch in ${ARCHES}; do
171 t="$out/release/buildroot_rootfs/buildroot-$VER-$arch.tar"
172 cp "$out/build/$arch/rootfs.tar" "$t" && gzip --force -9 "$t"
175 chmod u+rwX,go+rX -R "$out/release/"*
177 sumfiles=$(cd "$out/release" && for f in *; do
178 [ -f "$f" -a "$f" != MD5SUMS ] && echo "$f"; done)
179 ( cd "$out/release" && md5sum $sumfiles > MD5SUMS )
181 logevent "finish populate release" -
182 msg "output in $out/release"
183 msg "entire process took $SECONDS seconds"
184 logevent "finished" "$tstart"