#!/bin/bash # # LTSI helper script to generate a git tree from the quilt LTSI tree # # Copyright 2012 Greg Kroah-Hartman # Copyright 2012 Linux Foundation # # Licensed under the GPLv2 only. # # if [ "$1" = "--help" ]; then echo -e "Usage: `basename $0` [--help | -a]" echo -e " If no options are specified the script assumes no LTSI branch has been created" echo -e " [--help]\tShows usage information" echo -e " [-a]\t\tAuto resume after last applied patch (skipping branch creation)" exit 0 fi UPSTREAM="git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git" if [ "$1" = "-a" ]; then AUTORESUME=1 shift fi DIR=`dirname $0 |sed 's/scripts$//'` SERIES=$DIR/series if [ ! -f "$SERIES" ]; then echo Cant find series file at $SERIES exit 1 fi if [ -n "$2" ];then START=$2 fi diffstat --help > /dev/null 2>&1 if [ $? != 0 ]; then echo It appears you dont have diffstat installed. echo Please install it. exit 1 fi if [ ! -d .git ]; then echo There does not appear to be a git tree in this dir. echo You need a copy of: echo $UPSTREAM echo as a baseline. exit 1 fi KVER=`cat $DIR/KERNEL_VERSION` git rev-parse -q --verify v$KVER > /dev/null if [ $? != 0 ]; then echo There is no \"v$KVER\" in this git repository. Perhaps pull from: echo $UPSTREAM echo to get this tag? exit 1 fi if [ -n "$AUTORESUME" ]; then PARENT=`git show|grep ommit|grep 'pstream\|herry\|tip'|sed 's/.* \([0-9a-f]\+\).*/\1/'` CLEN=`echo $PARENT|wc -c` if [ $CLEN -ne 41 ]; then echo Failed to autodetect resume point -- no parent ID echo falling back to diffstat detection DS1=`mktemp` DS2=`mktemp` git show | diffstat -p0 > $DS1 for i in $DIR/patches\.*/*\.patch ; do cat $i | diffstat -p0 > $DS2 cmp -s $DS1 $DS2 if [ $? = 0 ]; then START=$i break fi done rm $DS1 $DS2 if [ -z "$START" ]; then echo diffstat detection failed exit 1 fi fi if [ -z "$START" ]; then START=`grep -l $PARENT $DIR/patches.*/*` fi if [ -z "$START" ]; then echo Failed to autodetect resume point - no matching filename echo for patch that created current HEAD commit $PARENT exit 1 fi START=`echo $START|sed 's/^.*patches\./patches./'` echo resuming from current \"$START\" fi if [ -z "$START" ]; then echo creating branch "$KVER-ltsi" git checkout -b $KVER-ltsi v$KVER if [ $? != 0 ]; then echo Creation of branch $KVER-ltsi failed exit 1 fi fi COUNT=`cat $SERIES | grep '^[a-zA-Z0-9_]'|wc -l` APPLIED=0 for i in `cat $SERIES | grep '^[a-zA-Z0-9_]'` do APPLIED=$[$APPLIED+1] if [ -n "$START" ]; then if [ "$START" != "$i" ];then continue else START="" continue fi fi if [ ! -f "$DIR/$i" ];then echo $DIR/$i doesnt exist break fi echo -n "($APPLIED/$COUNT) " git am $DIR/$i if [ $? != 0 ];then echo git am of $i failed. STBU. exit 1 fi done