summaryrefslogtreecommitdiff
path: root/utils/release/tag.sh
diff options
context:
space:
mode:
Diffstat (limited to 'utils/release/tag.sh')
-rwxr-xr-xutils/release/tag.sh109
1 files changed, 109 insertions, 0 deletions
diff --git a/utils/release/tag.sh b/utils/release/tag.sh
new file mode 100755
index 00000000000..399d5c5a7fa
--- /dev/null
+++ b/utils/release/tag.sh
@@ -0,0 +1,109 @@
+#!/bin/sh
+#===-- tag.sh - Tag the LLVM release candidates ----------------------------===#
+#
+# The LLVM Compiler Infrastructure
+#
+# This file is distributed under the University of Illinois Open Source
+# License.
+#
+#===------------------------------------------------------------------------===#
+#
+# Create branches and release candidates for the LLVM release.
+#
+#===------------------------------------------------------------------------===#
+
+set -e
+
+release=""
+rc=""
+rebranch="no"
+
+base_url="https://llvm.org/svn/llvm-project"
+
+function usage() {
+ echo "usage: `basename $0` -release <num> [-rebranch]"
+ echo "usage: `basename $0` -release <num> -rc <num>"
+ echo " "
+ echo " -release <num> The version number of the release"
+ echo " -rc <num> The release candidate number"
+ echo " -rebranch Remove existing branch, if present, before branching"
+ echo " -final Tag final release candidate"
+}
+
+function tag_version() {
+ set -x
+ for proj in llvm cfe dragonegg test-suite compiler-rt ; do
+ if svn ls $base_url/$proj/branches/release_$release > /dev/null 2>&1 ; then
+ if [ $rebranch = "no" ]; then
+ continue
+ fi
+ svn remove -m "Removing old release_$release branch for rebranching." \
+ $base_url/$proj/branches/release_$release
+ fi
+ svn copy -m "Creating release_$release branch" \
+ $base_url/$proj/trunk \
+ $base_url/$proj/branches/release_$release
+ done
+ set +x
+}
+
+function tag_release_candidate() {
+ set -x
+ for proj in llvm cfe dragonegg test-suite compiler-rt ; do
+ if ! svn ls $base_url/$proj/tags/RELEASE_$release > /dev/null 2>&1 ; then
+ svn mkdir -m "Creating release directory for release_$release." $base_url/$proj/tags/RELEASE_$release
+ fi
+ if ! svn ls $base_url/$proj/tags/RELEASE_$release/$rc > /dev/null 2>&1 ; then
+ svn copy -m "Creating release candidate $rc from release_$release branch" \
+ $base_url/$proj/branches/release_$release \
+ $base_url/$proj/tags/RELEASE_$release/$rc
+ fi
+ done
+ set +x
+}
+
+while [ $# -gt 0 ]; do
+ case $1 in
+ -release | --release )
+ shift
+ release=$1
+ ;;
+ -rc | --rc )
+ shift
+ rc="rc$1"
+ ;;
+ -rebranch | --rebranch )
+ rebranch="yes"
+ ;;
+ -final | --final )
+ rc="final"
+ ;;
+ -h | --help | -help )
+ usage
+ exit 0
+ ;;
+ * )
+ echo "unknown option: $1"
+ usage
+ exit 1
+ ;;
+ esac
+ shift
+done
+
+if [ "x$release" = "x" ]; then
+ echo "error: need to specify a release version"
+ echo
+ usage
+ exit 1
+fi
+
+release=`echo $release | sed -e 's,\.,,g'`
+
+if [ "x$rc" = "x" ]; then
+ tag_version
+else
+ tag_release_candidate
+fi
+
+exit 1