summaryrefslogtreecommitdiffstats
path: root/sanity/kernel_compile.sh
diff options
context:
space:
mode:
authorRaghavendra Bhat <raghavendrabhat@gluster.com>2012-03-28 19:59:51 +0530
committerRaghavendra Bhat <raghavendrabhat@gluster.com>2012-03-28 20:00:29 +0530
commit24c257c608bcfbfe981548fef14ec42579bb1130 (patch)
tree0021c64afacaa431c86c06e3af379058148c053d /sanity/kernel_compile.sh
parent4293282fd507e6165916632b9ed2d3789d0f31bf (diff)
sanity: add kernel compile script and make changes to the nightly sanity kernel_compile
Change-Id: I1f84a1fed05c15c5258e66d39d87fb59e952a111 Signed-off-by: Raghavendra Bhat <raghavendrabhat@gluster.com>
Diffstat (limited to 'sanity/kernel_compile.sh')
-rwxr-xr-xsanity/kernel_compile.sh243
1 files changed, 243 insertions, 0 deletions
diff --git a/sanity/kernel_compile.sh b/sanity/kernel_compile.sh
new file mode 100755
index 0000000..f010e3d
--- /dev/null
+++ b/sanity/kernel_compile.sh
@@ -0,0 +1,243 @@
+#! /bin/bash
+## vi: ai si et ts=4 sw=4 sts=4 bs=2 sta sr
+
+ENV_me=$(basename $0);
+ENV_medir="$(dirname $0)";
+[ "$ENV_medir" = "." ] && ENV_medir="$(pwd)";
+ENV_retval=0;
+
+ENV_short_options='cs:m:V';
+ENV_long_options='continue,site:,mainline:,verbose,quiet,help,version';
+
+ENV_timestamp_in_log=0; # 0 = Disabled, 1 = Enabled
+ENV_log="/dev/stderr";
+ENV_verbosity=2;
+ENV_debug=1;
+ENV_tmpdir=""; ## Temporary directory. Defined later
+
+ENV_version="0.0";
+ENV_copyright_years="2008";
+
+def_mainline="2.6";
+def_site="http://www.kernel.org";
+
+function print_help () {
+ cat <<-_HERE_
+Usage: $ENV_me [OPTION]... [FILE]...
+<DESCRIPTION HERE>.
+
+Mandatory arguments to long options are mandatory for short options too.
+ --help display this help and exit
+ --version output version information and exit
+_HERE_
+}
+
+function timestamp () {
+ echo "$(date +%F\ %T)";
+}
+
+function log () {
+ if [ "$ENV_timestamp_in_log" = "1" ]; then
+ echo "$ENV_me: $(timestamp): $@" | tee -a $log;
+ else
+ echo "$ENV_me: $(timestamp): $@";
+ fi
+}
+
+function debug () {
+ if [ "$ENV_debug" = 1 -o "$ENV_verbosity" = 3]; then
+ echo "$@";
+ fi
+}
+
+function error () {
+ if [ "$ENV_verbosity" -ge 1 ]; then
+ echo "$ENV_me: $@" 1>&2;
+ quit 1;
+ fi
+}
+
+function warn () {
+ if [ "$ENV_verbosity" -ge 1 ]; then
+ echo "$ENV_me: $@" 1>&2;
+ fi
+}
+
+function outn () {
+ if [ "$ENV_verbosity" -ge 2 ]; then
+ echo -n "$@";
+ fi
+}
+
+function out () {
+ if [ "$ENV_verbosity" -ge 2 ]; then
+ echo "$@";
+ fi
+}
+
+function outln () {
+ if [ "$ENV_verbosity" -ge 2 ]; then
+ echo -n "$@" | tee -a $ENV_log;
+ fi
+}
+
+function outl () {
+ if [ "$ENV_verbosity" -ge 2 ]; then
+ echo "$@" | tee -a $ENV_log;
+ fi
+}
+
+function quit () {
+ [ -d "$ENV_tmpdir" ] && rm -rf "$ENV_tmpdir";
+ exit $1;
+}
+
+function print_version () {
+ if [ "$ENV_package" != "" ]; then
+ version_str="$ENV_me ($ENV_package) $ENV_version";
+ else
+ version_str="$ENV_me $ENV_version";
+ fi
+
+ cat <<-_version_
+ $version_str
+ Copyright (C) ${ENV_copyright_years:-$(date +%Y)} Z Research, Inc.
+_version_
+}
+
+function print_usage () {
+ warn "Try \`$ENV_me --help' for more information.";
+ if [ "$1" != "0" -a "$1" != "" ]; then
+ exit "$1";
+ fi
+}
+
+function parseargs () {
+ unset ${!OPT_@};
+ ARGV=($(getopt --shell bash --name $ENV_me \
+ --option "$ENV_short_options" \
+ --longoptions "$ENV_long_options" \
+ -- "$@")) || print_usage 1;
+
+ local index=0;
+ while [ "${ARGV[$index]}" != "--" ]; do
+ local opt="$(echo ${ARGV[$index]//-/_} | sed 's/^__\?//')";
+ eval local arg=${ARGV[$index+1]}; ## eval to get rid of 's
+
+ if [[ "${ARGV[$index+1]}" =~ ^$'\''.* ]]; then # To
+## debug "Setting OPT_$opt = $arg";
+ eval OPT_${opt}=$arg;
+ index=$((index+1));
+ else
+## debug "Incrementing OPT_$opt";
+ eval OPT_$opt=$((OPT_$opt+1));
+ fi
+ index=$((index+1));
+ done
+ eval ARGV=("${ARGV[@]:$index+1}");
+}
+
+function make_tmp_dir () {
+ local dirname="$ENV_me.$RANDOM.$RANDOM.$RANDOM.$$.XXXX";
+
+ umask 077;
+ ENV_tmpdir="$(mktemp -d ${tmpdir:-/tmp}/$dirname)";
+
+ [ -z "$ENV_tmpdir" ] || [ ! -d "$ENV_tmpdir" ] && {
+ warn "Unable to create temporary directory. Exiting ..";
+ return 1;
+ }
+ return 0;
+}
+
+function get_tarball () {
+ url="$1";
+ filename=$(basename $url);
+ basedir=$(pwd);
+
+ [ -f "$filename" ] && {
+ [ "$OPT_continue" != "1" ] && error "$filename: file exists.";
+ }
+ wget -c $url;
+## out "Updating Timestamps ..";
+## $UPDATE_TIMESTAMP "$filename";
+
+ return 0;
+}
+
+
+function get_latest_tarball () {
+ basedir=$(pwd);
+ cd $ENV_tmpdir;
+
+ echo -n "Retreiving listing [ $ENV_site ] ... ";
+ wget -q "$ENV_site";
+ echo "Done";
+
+ latest=$(sed -n '/The latest stable version of the Linux kernel is/,/<\/tr>/p' index.html | \
+ sed -n 's/.*"\(.*\)">F<.*/\1/p');
+ [ "$latest" = "" ] && error "$ENV_site: No tarball found";
+
+ cd $basedir;
+ url="$ENV_site$latest";
+ get_tarball "$url";
+
+ return 0;
+}
+
+function init () {
+ parseargs "$@";
+ set -e;
+
+ [ "$OPT_help" = "1" ] && print_help && quit 0;
+ [ "$OPT_version" = "1" ] && print_version && quit 0;
+ trap 'quit 255' 1 2 3 6 13 15;
+ make_tmp_dir || quit 1;
+
+ OPT_verbosity=$((${OPT_verbose:-0} + ${OPT_v:-0}));
+
+ ENV_mainline=${OPT_mainline:-${OPT_m:-$def_mainline}};
+ ENV_site=${OPT_site:-${OPT_s:-$def_site}};
+
+ return 0;
+}
+
+function main () {
+ filename=;
+
+ if [ ${#ARGV[@]} = 0 ]; then
+ out "No input specified. Fetching latest kernel tarball ..";
+ get_latest_tarball;
+ elif [[ "${ARGV[0]}" =~ ^http|ftp ]]; then
+ out "URL detected. Fetching from URL ..";
+ get_tarball "$@";
+ elif [ -f "${ARGV[0]}" ]; then
+ filename=$(basename ${ARGV[0]});
+ if [[ ("${ARGV[0]}" =~ /) && ("${ARGV[0]::2}" != "./") ]]; then
+ out "File detected. Copying from location ..";
+ cp "${ARGV[0]}" .;
+ fi
+ else
+ error "${ARGV[0]}: Unknown input method";
+ fi
+
+ out "Extracting Tarball ..";
+ tar -jxf $filename;
+ cd ${filename%.tar.bz2};
+ find . -exec touch '{}' \;
+ out "Making allmodconfig";
+ make allmodconfig;
+ out "Making depmod ..";
+ #make depmod;
+ out "Making bzImage ..";
+ make bzImage;
+ out "Making modules ..";
+ make modules;
+
+ quit 0;
+}
+
+init "$@" && main "$@";
+quit $ENV_retval;
+
+