| #!/bin/bash |
| |
| STABLE_VERSION="" |
| EMAIL_ADDRESS='<gregkh@linuxfoundation.org>' |
| |
| extract_addr() |
| { |
| read l |
| read l |
| read l |
| read l |
| a=$(echo "$l" | sed -n -e 's/.*<\(.*@[^>]*\).*/\1/p') |
| echo $a |
| } |
| |
| if [ x"$EMAIL_ADDRESS" = x ] |
| then |
| echo "You must set the EMAIL_ADDRESS environment variable to your email address" |
| exit 1 |
| fi |
| FROM=$EMAIL_ADDRESS |
| |
| TO="" |
| CC="" |
| STABLE='<stable@vger.kernel.org>' |
| STABLE_COMMITS='<stable-commits@vger.kernel.org>' |
| |
| author() |
| { |
| first_author="" |
| TXT=$2 |
| if [ ! -f $TXT ] |
| then |
| echo "$TXT is missing" |
| exit 1 |
| fi |
| author="" |
| while read l |
| do |
| # skip the Message-ID: line so we don't send email to the wrong place |
| #echo "$l" |
| reply=$(echo "$l" | grep -i Message-ID:) |
| if [ x"$reply" != x ] |
| then |
| continue |
| fi |
| |
| # if this is the start of the diff, then it's time to stop looking |
| diff=$(echo "$l" | grep "^--- ") |
| if [ x"$diff" != x ] |
| then |
| #echo "diffstart!!!!!" |
| break |
| fi |
| |
| for x in $l |
| do |
| a=$(echo "$x" | sed -n -e 's/.*<\(.*@[^>]*\).*/\1/p') |
| if [ x"$a" != x ] |
| then |
| if [ x"$author" == x ] |
| then |
| author=$a |
| first_author=$a |
| else |
| author="$author $a" |
| fi |
| fi |
| done |
| done < $TXT |
| author=$(echo "$author" | tr ' ' '\n' | grep -v "$first_author" | |
| sort | uniq) |
| author="$first_author $author" |
| eval $1=$(echo $author | sed -e 's/ /,/g') |
| if [ x"$3" != x ] |
| then |
| eval $3=$first_author |
| fi |
| } |
| |
| |
| |
| reply() |
| { |
| PATCH=$1 |
| # patch_name=$(stripit $1) |
| # PATCH=$P/patches/$patch_name.patch |
| # TXT=$P/txt/$patch_name.txt |
| # if [ ! -f $TXT ] |
| # then |
| # echo $TXT is missing |
| # exit 1 |
| # fi |
| #echo "PATCH=$PATCH" |
| # SUBJECT=`grep "Subject:" $PATCH` |
| SUBJECT=`grep "Subject:" $PATCH | sed s/Subject\:\ //` |
| # SUBJECT=$(head -n 2 $PATCH | tail -n 1) |
| MESSAGE_ID=`grep -i "^Message-ID:" $PATCH | cut -f 2 -d ' ' | cut -f 2 -d '<' | cut -f 1 -d '>'` |
| author AUTHOR $1 FIRST_AUTHOR |
| #echo "author said $AUTHOR" |
| #echo "first_author said $FIRST_AUTHOR" |
| if [ x"$AUTHOR" == "x" ] |
| then |
| echo "nobody to notify" |
| exit 0 |
| fi |
| to="" |
| for i in $(echo "$AUTHOR" | sed -e 's/,/ /g') |
| do |
| if ! echo "$TO" | grep "$i" |
| then |
| to=$to" -to $i" |
| fi |
| done |
| if [ x"$cc" != x ] |
| then |
| cc="-cc $cc" |
| fi |
| |
| CHARSET=$(guess-charset "$PATCH") |
| if test "x$CHARSET" = "ANSI_X3.4-1968"; then |
| CHARSET= |
| else |
| CHARCMD="-charset=$CHARSET" |
| fi |
| |
| ID=`make_message_id` |
| |
| #echo "makemail -to $AUTHOR -from=$FROM -subject=\"patch $PATCH added to gregkh tree\" -date=\"$(date -R)\" -message=$ID $CHARCMD" |
| echo "sending to $AUTHOR" |
| |
| ( |
| echo |
| echo "The patch below does not apply to the $STABLE_VERSION-stable tree." |
| echo "If someone wants it applied there, or to any other stable or longterm" |
| echo "tree, then please email the backport, including the original git commit" |
| echo "id to <stable@vger.kernel.org>." |
| echo |
| echo "Possible dependencies:" |
| echo |
| echo "$(curl -s https://git.kernel.org/pub/scm/linux/kernel/git/sashal/deps.git/plain/v$STABLE_VERSION/$git_id)" |
| echo |
| echo "thanks," |
| echo |
| echo "greg k-h" |
| echo |
| echo "------------------ original commit in Linus's tree ------------------" |
| echo |
| cat $PATCH |
| echo |
| # echo |
| # echo -n "Patches currently in gregkh-2.6 which might be from " |
| # echo "$FIRST_AUTHOR are" |
| # echo |
| # grep -lR $FIRST_AUTHOR /home/gregkh/linux/patches/ 2> /dev/null | |
| # sed -e 's/\/home\/gregkh\/linux\/patches\///' |
| ) | |
| makemail -to "$AUTHOR" \ |
| -from="$FROM" \ |
| -cc="$STABLE" \ |
| -subject="FAILED: patch \"$SUBJECT\" failed to apply to $STABLE_VERSION-stable tree" \ |
| -date="$(date -R)" \ |
| -message_id="$ID" \ |
| "$CHARCMD" | \ |
| ~/bin/msmtp-enqueue.sh -a coco $to |
| } |
| |
| git_id="$1" |
| shift |
| |
| if [ "${git_id}" == "" ] ; then |
| echo "bad_stable GIT_ID KERNEL_VERSION" |
| echo "Must provide kernel version to be told is bad" |
| exit; |
| fi |
| |
| echo "git_id = ${git_id}" |
| |
| for STABLE_VERSION in $* |
| do |
| echo "bad version = ${STABLE_VERSION}" |
| TMPFILE=`mktemp bad_patch.XXXXX` || exit 1 |
| git show --pretty=email $git_id > $TMPFILE |
| reply $TMPFILE |
| rm $TMPFILE |
| done |
| |
| #for patch_file in $* |
| #do |
| # reply $patch_file |
| # echo "acknowledged $patch_file" |
| # echo "-----------------------------------------------" |
| # echo |
| #done |