4d45fb99ce2a3d5df74550eceebf9026e858995a
[~emulex/for-vlad/old/compat.git] / bin / ckmake
1 #!/bin/bash
2 #
3 # Copyright (C) 2012, Luis R. Rodriguez <mcgrof@frijolero.org>
4 # Copyright (C) 2012, Hauke Mehrtens <hauke@hauke-m.de>
5 #
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License version 2 as
8 # published by the Free Software Foundation.
9 #
10 # You can use this to compile a module accross all installed kernels
11 # found. This relies on distribution specific kernels, but can handle
12 # your own custom list of target kernels. Log is setnt to LOG variable.
13
14 # Pretty colors
15 GREEN="\033[01;32m"
16 YELLOW="\033[01;33m"
17 NORMAL="\033[00m"
18 BLUE="\033[34m"
19 RED="\033[31m"
20 PURPLE="\033[35m"
21 CYAN="\033[36m"
22 UNDERLINE="\033[02m"
23
24 #export KCFLAGS="-Wno-unused-but-set-variable"
25 KERNEL_DIR="/lib/modules"
26 KLIBS=""
27 LOG="ckmake.log"
28
29 LSB_RED_ID=$(/usr/bin/lsb_release -i -s)
30 case $LSB_RED_ID in
31 "Ubuntu")
32         for i in $(find /lib/modules/ -type d -name \*generic\* | sort -n -r); do
33                 KLIBS="$KLIBS $i"
34         done
35         ;;
36 *)
37         echo -e "Unsupported distribution"
38         exit
39         ;;
40 esac
41
42 nice make clean 2>&1 > $LOG
43
44 for i in $KLIBS; do
45         KERNEL=$(basename $i)
46         DIR=${i}/build/
47         echo -e "--------------------------------------------" >> $LOG
48
49         if [[ ! -d $DIR ]]; then
50                 continue
51         fi
52
53         echo -en "Trying kernel ${BLUE}" | tee -a $LOG
54         printf "%40s\t" "${KERNEL}" | tee -a $LOG
55         echo -en "${NORMAL}" | tee -a $LOG
56
57         ionice -c 3 nice -n 20 make KLIB=$DIR KLIB_BUILD=$DIR -j6 -Wunused-but-set-variable &>> $LOG
58         if [[ $? -eq 0 ]]; then
59                 echo -e "${GREEN}[OK]${NORMAL}" | tee -a $LOG
60         else
61                 echo -e "${RED}[FAILED]${NORMAL}" | tee -a $LOG
62         fi
63
64         nice make clean KLIB=$DIR KLIB_BUILD=$DIR 2>&1 >> $LOG
65 done