summaryrefslogtreecommitdiff
path: root/utils/release
diff options
context:
space:
mode:
authorTom Stellard <tstellar@redhat.com>2017-03-24 16:13:18 +0000
committerTom Stellard <tstellar@redhat.com>2017-03-24 16:13:18 +0000
commit7a6e6b169d1d685f552dc6158e759023dcbe4a6f (patch)
tree73277ba9e01171c2c9f3381ecb32fb5db807b0b4 /utils/release
parentce91f5368809d1e80c09a2d706402fc0b2360de0 (diff)
stable-merge-request.sh: Add a script for submitting merge requests via bugzilla
Summary: This script will automatically create a new stable merge request bug in bugzilla for the given svn revision and release number. Reviewers: hans Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D30905 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298705 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/release')
-rwxr-xr-xutils/release/merge-request.sh198
1 files changed, 198 insertions, 0 deletions
diff --git a/utils/release/merge-request.sh b/utils/release/merge-request.sh
new file mode 100755
index 00000000000..3345d2ad85c
--- /dev/null
+++ b/utils/release/merge-request.sh
@@ -0,0 +1,198 @@
+# !/bin/bash
+#===-- merge-request.sh ---------------------------------------------------===#
+#
+# The LLVM Compiler Infrastructure
+#
+# This file is distributed under the University of Illinois Open Source
+# License.
+#
+#===------------------------------------------------------------------------===#
+#
+# Submit a merge request to bugzilla.
+#
+#===------------------------------------------------------------------------===#
+
+dryrun=""
+stable_version=""
+revision=""
+BUGZILLA_BIN=""
+BUGZILLA_CMD=""
+release_metabug=""
+bugzilla_product="new-bugs"
+bugzilla_component="new bugs"
+bugzilla_assigned_to=""
+bugzilla_user=""
+bugzilla_version=""
+bugzilla_url="http://bugs.llvm.org/xmlrpc.cgi"
+
+function usage() {
+ echo "usage: `basename $0` -user EMAIL -stable-version X.Y -r NUM"
+ echo ""
+ echo " -user EMAIL Your email address for logging into bugzilla."
+ echo " -stable-version X.Y The stable release version (e.g. 4.0, 5.0)."
+ echo " -r NUM Revision number to merge (e.g. 1234567)."
+ echo " -bugzilla-bin PATH Path to bugzilla binary (optional)."
+ echo " -assign-to EMAIL Assign bug to user with EMAIL (optional)."
+ echo " -dry-run Print commands instead of executing them."
+}
+
+while [ $# -gt 0 ]; do
+ case $1 in
+ -user)
+ shift
+ bugzilla_user="$1"
+ ;;
+ -stable-version)
+ shift
+ stable_version="$1"
+ ;;
+ -r)
+ shift
+ revision="$1"
+ ;;
+ -project)
+ shift
+ project="$1"
+ ;;
+ -component)
+ shift
+ bugzilla_component="$1"
+ ;;
+ -bugzilla-bin)
+ shift
+ BUGZILLA_BIN="$1"
+ ;;
+ -assign-to)
+ shift
+ bugzilla_assigned_to="--assigned_to=$1"
+ ;;
+ -dry-run)
+ dryrun="echo"
+ ;;
+ -help | --help | -h | --h | -\? )
+ usage
+ exit 0
+ ;;
+ * )
+ echo "unknown option: $1"
+ usage
+ exit 1
+ ;;
+ esac
+ shift
+done
+
+if [ -z "$stable_version" ]; then
+ echo "error: no stable version specified"
+ exit 1
+fi
+
+case $stable_version in
+ 4.0)
+ release_metabug="32061"
+ ;;
+ *)
+ echo "error: invalid stable version"
+ exit 1
+esac
+bugzilla_version=$stable_version
+
+if [ -z "$revision" ]; then
+ echo "error: revision not specified"
+ exit 1
+fi
+
+if [ -z "$bugzilla_user" ]; then
+ echo "error: bugzilla username not specified."
+ exit 1
+fi
+
+if [ -z "$BUGZILLA_BIN" ]; then
+ BUGZILLA_BIN=`which bugzilla`
+ if [ $? -ne 0 ]; then
+ echo "error: could not find bugzilla executable."
+ echo "Make sure the bugzilla cli tool is installed on your system: "
+ echo "pip install python-bugzilla (recommended)"
+ echo ""
+ echo "Fedora: dnf install python-bugzilla"
+ echo "Ubuntu/Debian: apt-get install bugzilla-cli"
+ exit 1
+ fi
+fi
+
+BUGZILLA_MAJOR_VERSION=`$BUGZILLA_BIN --version 2>&1 | cut -d . -f 1`
+
+if [ $BUGZILLA_MAJOR_VERSION -eq 1 ]; then
+
+ echo "***************************** Warning *******************************"
+ echo "You are using an older version of the bugzilla cli tool. You will be "
+ echo "able to create bugs, but this script will crash with the following "
+ echo "error when trying to read back information about the bug you created:"
+ echo ""
+ echo "KeyError: 'internals'"
+ echo ""
+ echo "To avoid this error, use version 2.0.0 or higher"
+ echo "https://pypi.python.org/pypi/python-bugzilla"
+ echo "*********************************************************************"
+fi
+
+BUGZILLA_CMD="$BUGZILLA_BIN --bugzilla=$bugzilla_url"
+
+bug_url="https://reviews.llvm.org/rL$revision"
+
+echo "Checking for duplicate bugs..."
+
+check_duplicates=`$BUGZILLA_CMD query --url $bug_url`
+
+if [ -n "$check_duplicates" ]; then
+ echo "Duplicate bug found:"
+ echo $check_duplicates
+ exit 1
+fi
+
+echo "Done"
+
+# Get short commit summary
+commit_summary=''
+commit_msg=`svn log -r $revision https://llvm.org/svn/llvm-project/`
+if [ $? -ne 0 ]; then
+ echo "warning: failed to get commit message."
+ commit_msg=""
+fi
+
+if [ -n "$commit_msg" ]; then
+ commit_summary=`echo "$commit_msg" | sed '4q;d' | cut -c1-80`
+ commit_summary=" : ${commit_summary}"
+fi
+
+bug_summary="Merge r$revision into the $stable_version branch${commit_summary}"
+
+if [ -z "$dryrun" ]; then
+ set -x
+fi
+
+${dryrun} $BUGZILLA_CMD --login --user=$bugzilla_user new \
+ -p "$bugzilla_product" \
+ -c "$bugzilla_component" -u $bug_url --blocked=$release_metabug \
+ -o All --priority=P --arch All -v $bugzilla_version \
+ --summary "${bug_summary}" \
+ -l "Is this patch OK to merge to the $stable_version branch?" \
+ $bugzilla_assigned_to \
+ --oneline
+
+set +x
+
+if [ -n "$dryrun" ]; then
+ exit 0
+fi
+
+if [ $BUGZILLA_MAJOR_VERSION -eq 1 ]; then
+ success=`$BUGZILLA_CMD query --url $bug_url`
+ if [ -z "$success" ]; then
+ echo "Failed to create bug."
+ exit 1
+ fi
+
+ echo " Created new bug:"
+ echo $success
+fi