#!/bin/bash die() { echo -e $* >&2 echo aborting.. >&2 exit 1 } canon() { cd $1 CANON=$PWD cd - } canon $(dirname $0) MYDIR=$CANON while [ ${#*} -gt 1 ]; do case "$1" in -t) shift; TREE=$1 ;; -s) shift; SERIES=$1 ;; *) die "unknown argument $1" break; ;; esac shift; done [ -z "$TREE" -o -z "$SERIES" ] && die "I need a tree and series:\n\t$0 -t kernel_dir -s series_name" [ ! -d $TREE ] && die "kernel tree '$TREE' isn't a directory" SERIES=$(basename $SERIES) [ ! -f $MYDIR/series/$SERIES ] && die "no series file '$SERIES'" canon $TREE TREE=$CANON # patch scripts wants a relative path from the linux tree to # its patch pile :( MY=$(echo $MYDIR | sed -e 's_^/__') TR=$(echo $TREE | sed -e 's_^/__') while true ; do M=$(echo $MY | cut -d/ -f 1) T=$(echo $TR | cut -d/ -f 1) if [ $M != $T ]; then break; fi MY=$(echo $MY | cut -d/ -f 2-) TR=$(echo $TR | cut -d/ -f 2-) done [ $MY == $MYDIR ] && die "bad! $MY == $MYDIR" REVERSE=$(revpath $TR)${MY} ABSINO=$(stat $MYDIR | awk '($3 == "Inode:") {print $4}') REVINO=`(cd $TREE ; stat $REVERSE | awk '($3 == "Inode:") {print $4}')` [ $ABSINO != $REVINO ] && die "inodes differ, my reverse path is bad?" echo export PATCHSCRIPTS_LIBDIR=$REVERSE cd $TREE ln -sf $REVERSE/series/$SERIES series PATH_ELEMENTS=$(echo $PATH | sed -e 's/:/ /g') NEW_PATH=$MYDIR/scripts for p in $PATH_ELEMENTS; do if echo $p | grep kernel_patches/scripts > /dev/null 2>&1 ; then continue; fi NEW_PATH="$NEW_PATH:$p" done echo export PATH=$NEW_PATH echo "'$TREE' successfully setup" >&2