The cirros image was rebuilt against the 3.13.0-83 kernel, drivers e1000e, igbvf...
[packages/trusty/cirros-testvm.git] / cirros-testvm / src-cirros / bin / grab-kernels
1 #!/bin/sh
2
3 burl="https://launchpad.net/ubuntu/+archive/primary/+files/linux-image"
4 outdir="./download"
5 def_arches="i386 x86_64 arm powerpc ppc64 ppc64le aarch64"
6
7 error() { echo "$@" 1>&2; }
8 fail() { [ $# -eq 0 ] || error "$@"; exit 1; }
9 dl() {
10    local url="$1" target="$2" tfile="" t=""
11    [ -f "$target" ] && return
12    t=$(dirname "$target")
13    tfile=$(mktemp "$t/.${0##*/}.XXXXXX") || return
14    wget "$url" -O "$tfile" &&
15       mv "$tfile" "$target" ||
16       { t=$?; rm -f "$tfile"; return $t; }
17 }
18
19 [ "$1" = "--outdir" ] && { outdir="$1" && shift; }
20 kver="$1"
21 shift
22
23 if [ $# -eq 0 ]; then
24    set -- ${def_arches}
25 fi
26
27 [ -d "$outdir" ] || mkdir -p "$outdir" ||
28    fail "failed mkdir $outdir"
29
30
31 [ -n "$kver" ] || fail "must give kernel version"
32
33 # version like 3.13.0-52.86
34 #              3.19.0-20.20~14.04.1
35
36 kpart=${kver%-*}
37 upart=${kver#*-}
38 abi=${upart%%.*}
39 kmajor=${kpart%%.*}
40 kminor=${kpart#*.}; kminor=${kminor%.*}
41 kmicro=${kpart#*.*.}
42
43 for arch in "$@"; do
44     xarch=$arch;
45     [ "$arch" = "x86_64" ] && xarch="amd64";
46     if [ "$kmajor.$kminor" = "3.2" ]; then
47         case "$arch" in
48             x86_64|i386) flav="virtual";;
49             arm) flav="omap"; xarch="armel";;
50             powerpc) flav="powerpc64-smp";;
51             *) fail "unknown kernel:arch for $kver:$arch"
52         esac
53     elif [ "$kmajor.$kminor" = "3.13" -o "$kmajor.$kminor" = "3.19" ]; then
54         case "$arch" in
55             arm) xarch="armhf"; flav="generic";;
56             aarch64) xarch=arm64; flav="generic";;
57             powerpc|ppc64) xarch=powerpc; flav="powerpc64-smp";;
58             ppc64le) xarch="ppc64el"; flav="generic";;
59             x86_64|i386|arm64) flav="generic";;
60             *) fail "unknown kernel:arch for $kver:$arch"
61         esac
62     else
63         fail "unknown kernel $kver ($kmajor.$kminor)"
64     fi
65     url="$burl-${kmajor}.${kminor}.${kmicro}-${abi}-${flav}_${kver}_${xarch}.deb"
66     dl "$url" "$outdir/${url##*/}" || fail "failed dl $url"
67     ln -sf ${url##*/} "$outdir/kernel-${arch}.deb" ||
68       fail "failed symlink for $outdir/kernel-$arch.deb"
69 done
70