init
This commit is contained in:
commit
1d14791d03
177
linux-update
Executable file
177
linux-update
Executable file
|
@ -0,0 +1,177 @@
|
|||
#!/bin/sh
|
||||
|
||||
[ 0 = "`id -u`" ] || exec sudo http_proxy="$http_proxy" "$0" "$@"
|
||||
|
||||
SOURCE_BASE_DIR=/usr/src
|
||||
SOURCE_BASE_URI=http://www.kernel.org/pub/linux/kernel/v3.x/
|
||||
|
||||
usage() {
|
||||
echo "Usage: $0 $(help | sed -ne '3,$s/^\([^'"`printf '\t'`"']*\)'"`printf '\t'`"'.*$/\1/p' | tr '\n' '|' | sed -e 's/|/ | /g;s/ | $//')"
|
||||
}
|
||||
|
||||
help() {
|
||||
cat <<EOH
|
||||
$0 Command
|
||||
possible commands:
|
||||
help Print this help message
|
||||
latest_stable prints the latest stable available version on kernel.org
|
||||
latest_fetched prints the latest fetched version
|
||||
update_available prints the latest stable available version on kernel.org if it isn't fetched yet
|
||||
fetched prints all fetched versions
|
||||
download_uri [V] prints the uri of V (default: latest_stable)
|
||||
download [V] downloads the kernel of V (default: latest_stable)
|
||||
unpack simple unpack with unxz and tar in \$SOURCE_BASE_DIR (default: $SOURCE_BASE_DIR)
|
||||
fetch [V] downloads and unpack the kernel of V (default: latest_stable)
|
||||
update downloads and unpack the latest_stable kernel if it isn't fetched yet
|
||||
EOH
|
||||
}
|
||||
|
||||
cache() {
|
||||
eval "$1() { echo '$(echo "$2" | sed -e 's/'\''/'"'\\\''"'/g')'; }"
|
||||
$1
|
||||
}
|
||||
|
||||
_latest_stable() {
|
||||
curl -s http://www.kernel.org/kdist/finger_banner | sed -E -ne 's/^The latest stable .* version of the Linux kernel is: *([0-9.]*).*/\1/p' | head -1
|
||||
}
|
||||
|
||||
latest_stable() {
|
||||
cache latest_stable "`_latest_stable`"
|
||||
}
|
||||
|
||||
print_version() {
|
||||
while read v d
|
||||
do
|
||||
echo "$v"
|
||||
done
|
||||
}
|
||||
|
||||
print_dir() {
|
||||
while read v d
|
||||
do
|
||||
echo "$d"
|
||||
done
|
||||
}
|
||||
|
||||
kernelversion_of() {
|
||||
make -isC "$1" kernelversion
|
||||
}
|
||||
|
||||
fetched() {
|
||||
for d in "${SOURCE_BASE_DIR}"/linux-*
|
||||
do
|
||||
v="`kernelversion_of "$d"`"
|
||||
if [ "$v" ]
|
||||
then
|
||||
echo "$v $d"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
latest_version() {
|
||||
sort -rV | head -1
|
||||
}
|
||||
|
||||
latest_fetched() {
|
||||
fetched | latest_version
|
||||
}
|
||||
|
||||
is_listed() {
|
||||
awk \""${1}"'"==$1{print$0;exit}'
|
||||
}
|
||||
|
||||
latest_stable_is_fetched() {
|
||||
fetched | is_listed "`latest_stable`"
|
||||
}
|
||||
|
||||
update_available() {
|
||||
[ -z "`latest_stable_is_fetched`" ]
|
||||
}
|
||||
|
||||
download_uri() {
|
||||
echo "${SOURCE_BASE_URI}/linux-${1:-`latest_stable`}.tar.xz"
|
||||
}
|
||||
|
||||
download() {
|
||||
curl `download_uri "${1}"`
|
||||
}
|
||||
|
||||
unpack() {
|
||||
unxz | tar -C "${SOURCE_BASE_DIR}" -xf -
|
||||
}
|
||||
|
||||
fetch() {
|
||||
download | unpack
|
||||
}
|
||||
|
||||
update() {
|
||||
if update_available
|
||||
then
|
||||
echo Update available: `latest_stable`
|
||||
fetch
|
||||
else
|
||||
echo "Upto date."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
configs() {
|
||||
fetched | while read v d
|
||||
do
|
||||
[ -e "$d/.config" ] && echo "$v $d"
|
||||
done
|
||||
}
|
||||
|
||||
has_config() {
|
||||
configs | is_listed "$2"
|
||||
}
|
||||
|
||||
latest_config() {
|
||||
configs | latest_version
|
||||
}
|
||||
|
||||
copy_to_dir_config() {
|
||||
cp "${2:-`latest_config | print_dir`}/.config" "${1:-`latest_fetched | print_dir`}"
|
||||
}
|
||||
|
||||
install_config() {
|
||||
d="${1:-`latest_fetched | print_dir`}"
|
||||
s="${2:-`latest_config | print_dir`}"
|
||||
[ -e "$d/.config" ] || copy_to_dir_config "${d}" "${s}"
|
||||
}
|
||||
|
||||
oldconfig() {
|
||||
d="${1:-`latest_fetched | print_dir`}"
|
||||
install_config "$d" && make -C "$d" oldconfig
|
||||
}
|
||||
|
||||
install_all() {
|
||||
d="${1:-`latest_fetched | print_dir`}"
|
||||
oldconfig && make -C "$d" all modules_install install
|
||||
}
|
||||
|
||||
cmd="$1"
|
||||
shift
|
||||
|
||||
case "$cmd" in
|
||||
latest_stable) latest_stable ;;
|
||||
fetched) fetched ;;
|
||||
latest_fetched) latest_fetched ;;
|
||||
update_available) update_available ;;
|
||||
fetch) fetch "$@" ;;
|
||||
download_uri) download_uri "$@" ;;
|
||||
download) download "$@" ;;
|
||||
unpack) unpack ;;
|
||||
update) update ;;
|
||||
help|--help|-h) help ;;
|
||||
usage) usage ;;
|
||||
latest_stable_is_fetched) latest_stable_is_fetched ;;
|
||||
oldconfig) oldconfig "$@" ;;
|
||||
configs) configs ;;
|
||||
install) install_all ;;
|
||||
all) update && install_all ;;
|
||||
*)
|
||||
usage >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
Loading…
Reference in a new issue