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
diff --git a/cirros-testvm/src-cirros/bin/grab-kernels b/cirros-testvm/src-cirros/bin/grab-kernels
new file mode 100755 (executable)
index 0000000..448fa2f
--- /dev/null
@@ -0,0 +1,70 @@
+#!/bin/sh
+
+burl="https://launchpad.net/ubuntu/+archive/primary/+files/linux-image"
+outdir="./download"
+def_arches="i386 x86_64 arm powerpc ppc64 ppc64le aarch64"
+
+error() { echo "$@" 1>&2; }
+fail() { [ $# -eq 0 ] || error "$@"; exit 1; }
+dl() {
+   local url="$1" target="$2" tfile="" t=""
+   [ -f "$target" ] && return
+   t=$(dirname "$target")
+   tfile=$(mktemp "$t/.${0##*/}.XXXXXX") || return
+   wget "$url" -O "$tfile" &&
+      mv "$tfile" "$target" ||
+      { t=$?; rm -f "$tfile"; return $t; }
+}
+
+[ "$1" = "--outdir" ] && { outdir="$1" && shift; }
+kver="$1"
+shift
+
+if [ $# -eq 0 ]; then
+   set -- ${def_arches}
+fi
+
+[ -d "$outdir" ] || mkdir -p "$outdir" ||
+   fail "failed mkdir $outdir"
+
+
+[ -n "$kver" ] || fail "must give kernel version"
+
+# version like 3.13.0-52.86
+#              3.19.0-20.20~14.04.1
+
+kpart=${kver%-*}
+upart=${kver#*-}
+abi=${upart%%.*}
+kmajor=${kpart%%.*}
+kminor=${kpart#*.}; kminor=${kminor%.*}
+kmicro=${kpart#*.*.}
+
+for arch in "$@"; do
+    xarch=$arch;
+    [ "$arch" = "x86_64" ] && xarch="amd64";
+    if [ "$kmajor.$kminor" = "3.2" ]; then
+        case "$arch" in
+            x86_64|i386) flav="virtual";;
+            arm) flav="omap"; xarch="armel";;
+            powerpc) flav="powerpc64-smp";;
+            *) fail "unknown kernel:arch for $kver:$arch"
+        esac
+    elif [ "$kmajor.$kminor" = "3.13" -o "$kmajor.$kminor" = "3.19" ]; then
+        case "$arch" in
+            arm) xarch="armhf"; flav="generic";;
+            aarch64) xarch=arm64; flav="generic";;
+            powerpc|ppc64) xarch=powerpc; flav="powerpc64-smp";;
+            ppc64le) xarch="ppc64el"; flav="generic";;
+            x86_64|i386|arm64) flav="generic";;
+            *) fail "unknown kernel:arch for $kver:$arch"
+        esac
+    else
+        fail "unknown kernel $kver ($kmajor.$kminor)"
+    fi
+    url="$burl-${kmajor}.${kminor}.${kmicro}-${abi}-${flav}_${kver}_${xarch}.deb"
+    dl "$url" "$outdir/${url##*/}" || fail "failed dl $url"
+    ln -sf ${url##*/} "$outdir/kernel-${arch}.deb" ||
+      fail "failed symlink for $outdir/kernel-$arch.deb"
+done
+