Kernel Source updater script

From: Matteo Croce
Date: Mon Nov 05 2012 - 18:53:17 EST


Hi all,

I know that this is useless to people using git, but it was so fun to write
and I use it to update regularly my pc kernel source from time to time
while saving servers (and home) bandwidth

cheers!

#!/bin/sh

ver=$(awk '/^VERSION/{print$3}' Makefile)
patch=$(awk '/^PATCHLEVEL/{print$3}' Makefile)
sub=$(awk '/^SUBLEVEL/{print$3}' Makefile)

echo "Current kernel: $ver.$patch.$sub"

[ -d .pc ] && quilt pop -a

up_sub() {
next=$((sub + 1))
while wget -q --spider
http://www.kernel.org/pub/linux/kernel/v$ver.0/incr/patch-$ver.$patch.$sub-$next.xz;
do
url="$url http://www.kernel.org/pub/linux/kernel/v$ver.0/incr/patch-$ver.$patch.$sub-$next.xz";
sub=$next
next=$((next + 1))
done

echo "Upgrading to version: $ver.$patch.$sub"

wget -qO- $url |xz -d |patch -p1 |sed -u 's/$/
/' |tr '[\n]' '[\r]'
echo
}

up_patch(){
if [ $sub -gt 0 ]; then
url=
next=$((sub - 1))
while [ $sub -gt 0 ] ; do
if [ $next -ne 0 ]; then
url="$url http://www.kernel.org/pub/linux/kernel/v$ver.0/incr/patch-$ver.$patch.$next-$sub.xz";
else
url="$url http://www.kernel.org/pub/linux/kernel/v$ver.0/patch-$ver.$patch.$sub.xz";
fi
sub=$next
next=$((next - 1))
done

echo "Downgrading to version: $ver.$patch.$sub"

wget -qO- $url |xz -d |patch -p1 -R |sed -u 's/$/
/' |tr '[\n]' '[\r]'
echo
fi

url=
patch=$((patch + 1))
while wget -q --spider
http://www.kernel.org/pub/linux/kernel/v$ver.0/patch-$ver.$patch.xz;
do
url="$url http://www.kernel.org/pub/linux/kernel/v$ver.0/patch-$ver.$patch.xz";
patch=$((patch + 1))
done
patch=$((patch - 1))

sub=1
while wget -q --spider
http://www.kernel.org/pub/linux/kernel/v$ver.0/patch-$ver.$patch.$sub.xz;
do
sub=$((sub + 1))
done
sub=$((sub - 1))
url="$url http://www.kernel.org/pub/linux/kernel/v$ver.0/patch-$ver.$patch.$sub.xz";

echo "Upgrading to version: $ver.$patch.$sub"

wget -qO- $url |xz -d |patch -p1 |sed -u 's/$/
/' |tr '[\n]' '[\r]'
echo
}

case $1 in
patch)
up_patch
;;

sub)
up_sub
;;

*)
echo "usage: $0 [patch|sub]"
esac

[ -d .pc ] && while quilt push; do
quilt refresh
done
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/