blob: d7812457f65fc8e886d2fa1a41a3eba1bb8528dc [file] [log] [blame]
#!/bin/bash
#
# Copyright (C) 2012, Luis R. Rodriguez <mcgrof@frijolero.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# You can use this script to install all mainline kernels used
# to test compile the Linux kernel compatibility module. You can
# then use ckmake to cross compile against all supported kernels.
# Pretty colors
GREEN="\033[01;32m"
YELLOW="\033[01;33m"
NORMAL="\033[00m"
BLUE="\033[34m"
RED="\033[31m"
PURPLE="\033[35m"
CYAN="\033[36m"
UNDERLINE="\033[02m"
PREFIX=$HOME/
GIT_TREES="git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git"
GIT_TREES="$GIT_TREES git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git"
GIT_TREES="$GIT_TREES git://github.com/mcgrof/compat.git"
GIT_TREES="$GIT_TREES git://github.com/mcgrof/compat-drivers.git"
LINUX_GIT="git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git"
which git 2>&1 > /dev/null
if [[ $? -ne 0 ]]; then
echo -e "You need to install ${PURPLE}git${NORMAL}"
exit 1
fi
echo -e "This will typically take ~ ${YELLOW}10 ${CYAN}minutes${NORMAL}, download about "
echo -e "~ ${YELLOW}1 ${CYAN}GiB${NORMAL} of data over your network, and then consume about "
echo -e "~ ${YELLOW}2 ${CYAN}GiB${NORMAL} of hard drive space."
read -p "Do you still want to continue (y/N)? "
if [[ "${REPLY}" != "y" ]]; then
echo -e "Bailing out !"
exit 1
fi
mkdir -p $PREFIX
cd $PREFIX
for i in $GIT_TREES; do
TREE=$(echo ${i} | awk -F"/" '{print $NF}')
if [[ -d $PREFIX/$TREE ]]; then
echo "${GREEN}${TREE}${NORMAL} is already present, skipping..."
continue
fi
echo -e "Cloning ${GREEN}${TREE}${NORMAL}..."
case $TREE in
"linux-stable.git")
cd $PREFIX/
git clone $i
cd $PREFIX/linux-stable
# This lets us bake releases off of Linus' RC releases by
# simply git fetch'ing "linus" and reseting the tree afterwards.
git remote add linus $LINUX_GIT
;;
"linux-next.git")
cd $PREFIX
git clone $i --reference $PREFIX/linux-stable/.git/
;;
"compat-drivers.git")
# This is just what scripts are tested for. Probably best to
# unify all into one place but this will do for now.
mkdir -p $PREFIX/devel/
cd $PREFIX/devel/
git clone $i
;;
*)
cd $PREFIX
git clone $i
;;
esac
done