#! /bin/sh -e # Latest kernel version of this vintage. KERNELDIR=~/devel/kernel # Return the latest kernel versions. get_kernel_vers() { # if [ x"$GK_KERNS" = x ]; then # GK_KERNS=$(finger @finger.kernel.org | tail +2 | cut -s -d: -f2- | sed 's/[ ]*//') # fi if [ x"$GK_KERNS" = x ]; then GK_KERNS=$(lynx -width=500 -dump http://www.kernel.org/kdist/finger_banner | tail +2 | cut -s -d: -f2- | sed 's/[ ]*//') fi if [ x"$GK_KERNS" = x ]; then echo Failed to get kernel list from kernel.org >&2 exit 1 fi # Vanity are there too: only take recognized patches. # Ignore 2.4-bk versions: I don't know where they're coming from 8( echo "$GK_KERNS" # | egrep -- "$1|-rc|-bk|-pre|^[0-9]*\.[0-9]*\.[0-9]*\$" | grep -v '2\.4\.[0-9]*-bk[0-9]*' } PROBE=0 if [ x"$1" = x--probe ]; then PROBE=1 shift fi case "$1" in --*) echo "Usage: $0 [--probe] [kernel-base-version]" >&2 echo "Returns the latest version on the system, or with --probe," >&2 echo "returns the latest version on network." >&2 exit 1 ;; esac if [ $# -eq 0 ]; then set .; fi if [ $PROBE = 1 ]; then CANDIDATES=$(get_kernel_vers) else CANDIDATES=$(cd $KERNELDIR && ls -d linux-* | fgrep -v '.tmp' | grep -v -- '-ppc' | sed 's/^linux-//') fi for w; do case "$w" in # By default, ignore any vanity kernels. .) FILTER="^[0-9.]*(-rc[0-9]*|-bk[0-9]*|-pre[0-9]*)*\$";; # eg -mm. -*) FILTER="^[0-9.]*(-rc[0-9]*|-bk[0-9]*|-pre[0-9]*)*$w[0-9]*\$";; # eg. 2.4 *) FILTER="^$w[0-9.]*(-rc[0-9]*|-bk[0-9]*|-pre[0-9]*)*\$";; esac lkvercmp $(echo "$CANDIDATES" | egrep -- "$FILTER") done