]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blobdiff - scripts/quilt-mail
scripts/quilt-mail: add email address for Conor Dooley
[thirdparty/kernel/stable-queue.git] / scripts / quilt-mail
index e95e6290c8328b6c5391aff54586bacab9c2f1de..7b77e2970d85655e20faa9b6d7f6c37d537ceda3 100755 (executable)
 #!/bin/bash
+#
+# Script to take a stable-queue, and turn it into a -rc release to be
+# sent off in email.
+#
 
-MBOX=$1
-FULL_VERSION=`ketchup -m`
+# locations of some things that you might want to override if you are a
+# different developer than gregkh
+STABLE_QUEUE="/home/gregkh/linux/stable/stable-queue/"
+TMP_DIR="/home/gregkh/linux/tmp/"
+
+SCRIPT_NAME=`basename ${0}`
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+# programs that we depend on in this script
+REQUIREMENTS="kv splitmbox.pl kup mbox2send filterdiff"
+# todo check dependancies using hash or something
+
+
+MBOX="$1"
+if [ "${MBOX}" == "" ] ; then
+       echo "using default 'mbox' name for the mailbox."
+       MBOX="mbox"
+fi
+
+FULL_VERSION=`kv`
 BASE_VERSION=${FULL_VERSION/-rc?/}
-DATE=`date -u --date="2 days"`
+VERSION=`basename \`pwd\``
+ROOT_VERSION=${VERSION/\.y/}
+ROOT_VERSION=${ROOT_VERSION/linux-/}
+
+REL_ARRAY=(${FULL_VERSION//./ })
+MAJOR=${REL_ARRAY[0]}
+VER="${MAJOR}.x"
+
+RC_ARRAY=(${FULL_VERSION//-/ })
+RC=${RC_ARRAY[1]}
+
+#DATE=`date -u --date="2 days"`
+DATE=`date -u --rfc-822 --date="2 days"`
 
 if [ ${FULL_VERSION} == ${BASE_VERSION} ] ; then
        echo "Makefile says the version is ${FULL_VERSION}, did you forget to set the -rc version?"
        exit
 fi
 
-echo "creating the mailbox for kernel release ${FULL_VERSION}"
 
-TMPFILE=`mktemp stable_header.XXXXXX` || exit 1
+# create a directory for everything to live in
+#TMP_DIR=`mktemp -d ${TMP_DIR}/stable-${ROOT_VERSION}-XXXX` || exit 1
+TMP_DIR=`mktemp -d ${TMP_DIR}/stable-${FULL_VERSION}-XXX` || exit 1
+
+# Generate the Makefile diff, with just the version number change in it
+# relies on filterdiff from the wonderful patchutils package
+git diff Makefile | filterdiff --hunks 1 > ${TMP_DIR}/Makefile.patch
+
+
+# make a git tree to create the log file in the format that Linus likes.
+echo "Creating a git tree of the commits..."
+ORIGINAL_DIR=`pwd`
+TMP_TREE=`mktemp -d ${TMP_DIR}/stable-${ROOT_VERSION}-XXXX` || exit 1
+TMP_LOG=`mktemp ${TMP_DIR}/stable-log-XXXX` || exit 1
+git clone -s . ${TMP_TREE}
+cd ${TMP_TREE}
+git checkout -b temp_branch
+git quiltimport --patches=${STABLE_QUEUE}/queue-${ROOT_VERSION}
+if [ $? -ne 0 ]; then
+       echo "git quilt import failed!!!"
+       exit 1
+fi
+
+# Apply the Makefile patch and commit it
+patch -p1 < ${TMP_DIR}/Makefile.patch
+git commit -a -m "Linux ${FULL_VERSION}"
+
+# Generate the diffstat and patch
+git diff ${VERSION}..HEAD > ${TMP_DIR}/patch-${FULL_VERSION}
+git diff --stat ${VERSION}..HEAD > ${TMP_DIR}/diffstat
+
+# sign the patch
+gpg -a -b ${TMP_DIR}/patch-${FULL_VERSION}
+
+# generate the log file
+git log --abbrev=12 --format="%aN <%aE>%n    %s%n" ${VERSION}..HEAD > ${TMP_LOG}
+
+# clean up the git tree by deleting it
+cd ${ORIGINAL_DIR}
+#rm -rf ${TMP_TREE}
+
+
+echo "Creating the mailbox for kernel release ${FULL_VERSION}"
+TMPFILE=`mktemp ${TMP_DIR}/stable_header.XXXXXX` || exit 1
 NUM_PATCHES=`quilt series | wc -l`
 
 (
 echo "This is the start of the stable review cycle for the ${BASE_VERSION} release."
 echo "There are ${NUM_PATCHES} patches in this series, all will be posted as a response"
 echo "to this one.  If anyone has any issues with these being applied, please"
-echo "let us know.  If anyone is a maintainer of the proper subsystem, and"
-echo "wants to add a Signed-off-by: line to the patch, please respond with it."
+echo "let me know."
 echo ""
 echo "Responses should be made by ${DATE}."
 echo "Anything received after that time might be too late."
 echo ""
 echo "The whole patch series can be found in one patch at:"
-echo " kernel.org/pub/linux/kernel/v3.0/stable-review/patch-${FULL_VERSION}.gz"
+echo " https://www.kernel.org/pub/linux/kernel/v${VER}/stable-review/patch-${FULL_VERSION}.gz"
+echo "or in the git tree and branch at:"
+echo " git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-${ROOT_VERSION}.y"
 echo "and the diffstat can be found below."
 echo ""
 echo "thanks,"
@@ -34,22 +111,114 @@ echo ""
 echo "greg k-h"
 echo ""
 echo "-------------"
-cat diffstat
+echo "Pseudo-Shortlog of commits:"
+echo ""
+cat ${TMP_LOG}
+#stable-shortlog
+echo ""
+echo "-------------"
+echo ""
+echo "Diffstat:"
+echo ""
+
+cat ${TMP_DIR}/diffstat
 ) > ${TMPFILE}
 
-FROM="Greg KH <gregkh@linuxfoundation.org>"
-TO="linux-kernel@vger.kernel.org, stable@vger.kernel.org"
-CC="torvalds@linux-foundation.org, akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk"
-SUBJECT="${BASE_VERSION}-stable review"
+FROM="Greg Kroah-Hartman <gregkh@linuxfoundation.org>"
+TO="stable@vger.kernel.org"
+CC="patches@lists.linux.dev"
+#SUBJECT="${BASE_VERSION}-stable review"
+SUBJECT="${FULL_VERSION} review"
 
-quilt mail --mbox ${MBOX}      \
-       -m "$(cat ${TMPFILE})"  \
+quilt mail --mbox ${TMP_DIR}/${MBOX}   \
+       -M "${TMPFILE}"         \
        --sender "${FROM}"      \
        --from "${FROM}"        \
        --to "${TO}"            \
        --cc "${CC}"            \
-       --prefix ""             \
+       --prefix "PATCH ${ROOT_VERSION}"        \
        --subject "${SUBJECT}"
 
-#q mail --mbox x -m "$(cat ../stable-queue/00)" --sender gregkh@lf.org --from gregkh@lf.org --to foo@foo --subject "This is the subject"
+rm ${TMPFILE} ${TMP_LOG}
+
+echo "mbox is now in ${TMP_DIR}/${MBOX}"
+
+cd ${TMP_DIR}
+${STABLE_QUEUE}/scripts/mbox2send ${ROOT_VERSION} ${FULL_VERSION} ${MBOX}
+#< ${MBOX}.new formail -ds sh -c 'cat > msg.$FILENO'
+splitmbox.pl ${MBOX}.new .
+
+# find the "0" email message
+if [ -f "msg.0" ]; then
+       MSG="msg.0"
+elif [ -f "msg.00" ]; then
+       MSG="msg.00"
+elif [ -f "msg.000" ]; then
+       MSG="msg.000"
+elif [ -f "msg.0000" ]; then
+       MSG="msg.0000"
+else
+       echo "msg.ZERO can not be found???"
+       echo "Aborting!"
+       exit 1
+fi
+
+# List of names to cc: on the 00/XX email message
+# must escape '.' characters properly due to use of sed below
+CC_NAMES=("linux-kernel@vger\.kernel\.org"
+         "torvalds@linux-foundation\.org"
+         "akpm@linux-foundation\.org"
+         "linux@roeck-us\.net"
+         "shuah@kernel\.org"
+         "patches@kernelci\.org"
+         "lkft-triage@lists\.linaro\.org"
+         "pavel@denx\.de"
+         "jonathanh@nvidia\.com"
+         "f\.fainelli@gmail\.com"
+         "sudipm\.mukherjee@gmail\.com"
+         "srw@sladewatkins\.net"
+         "rwarsow@gmx\.de"
+         "conor@kernel\.org")
+
+#CC_LIST="stable@vger\.kernel\.org"
+CC_LIST="patches@lists.linux.dev"
+for name in "${CC_NAMES[@]}"; do
+       CC_LIST+=", ${name}"
+done
+echo "Adding names to ${MSG}: ${CC_LIST}"
+
+#sed -i -e "s/Cc: stable@vger\.kernel\.org/Cc: ${CC_LIST}/" "${TMP_DIR}"/"${MSG}"
+sed -i -e "s/Cc: ${CC}/Cc: ${CC_LIST}/" "${TMP_DIR}"/"${MSG}"
+
+
+# Create a script to upload the patch to kernel.org and to send the patches out
+echo "#!/bin/bash" > ${TMP_DIR}/send_it_off
+echo "kup --host=git@gitolite.kernel.org --subcmd=kup-server put patch-${FULL_VERSION} patch-${FULL_VERSION}.asc /pub/linux/kernel/v${VER}/stable-review/patch-${FULL_VERSION}.gz" >> ${TMP_DIR}/send_it_off
+
+if [ "${RC}" == "rc1" ] ; then
+       echo "git send-email msg.*" >> ${TMP_DIR}/send_it_off
+       echo "#git send-email ${MSG}" >> ${TMP_DIR}/send_it_off
+else
+       echo "#git send-email msg.*" >> ${TMP_DIR}/send_it_off
+       echo "git send-email ${MSG}" >> ${TMP_DIR}/send_it_off
+fi
+
+chmod 755 ${TMP_DIR}/send_it_off
+
+
+# Push a version of the patches out to the world in a git tree
+cd ${TMP_TREE}
+git checkout linux-${ROOT_VERSION}.y
+git merge -q temp_branch
+#echo "git push --force gitolite@ra.kernel.org:/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-${ROOT_VERSION}.y"
+#git push --force gitolite@ra.kernel.org:/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-${ROOT_VERSION}.y
+echo "git push --force git@gitolite.kernel.org:/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-${ROOT_VERSION}.y"
+git push --force git@gitolite.kernel.org:/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-${ROOT_VERSION}.y
+
+# clean up the git tree by deleting it
+cd ${ORIGINAL_DIR}
+rm -rf ${TMP_TREE}
 
+# announce what needs to be done
+echo "cd ${TMP_DIR}"
+echo "./send_it_off"