X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=cirros-testvm%2Fsrc-cirros%2Fbin%2Fgrab-kernels;fp=cirros-testvm%2Fsrc-cirros%2Fbin%2Fgrab-kernels;h=448fa2f76b850cefbec9adc980ac9f61e7a23b7a;hb=b0a0f15dfaa205161a7fcb20cf1b8cd4948c2ef3;hp=0000000000000000000000000000000000000000;hpb=c6ac3cd55ee2da956195eee393b0882105dfad4e;p=packages%2Ftrusty%2Fcirros-testvm.git diff --git a/cirros-testvm/src-cirros/bin/grab-kernels b/cirros-testvm/src-cirros/bin/grab-kernels new file mode 100755 index 0000000..448fa2f --- /dev/null +++ b/cirros-testvm/src-cirros/bin/grab-kernels @@ -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 +