blob: ed318b1455892bd30de4e8fbf23853feb2a2b8e7 [file] [log] [blame]
#!/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