d2d9911815fac9f66f6ecdf9f3ffd320e4b80c5e
[oota-llvm.git] / utils / release / tag.sh
1 #!/bin/sh
2 #===-- tag.sh - Tag the LLVM release candidates ----------------------------===#
3 #
4 #                     The LLVM Compiler Infrastructure
5 #
6 # This file is distributed under the University of Illinois Open Source
7 # License.
8 #
9 #===------------------------------------------------------------------------===#
10 #
11 # Create branches and release candidates for the LLVM release.
12 #
13 #===------------------------------------------------------------------------===#
14
15 set -e
16
17 release=""
18 rc=""
19
20 base_url="https://llvm.org/svn/llvm-project"
21
22 function usage() {
23     echo "usage: `basename $0` -release <num>"
24     echo "usage: `basename $0` -release <num> -rc <num>"
25     echo " "
26     echo "  -release <num>  The version number of the release"
27     echo "  -rc <num>       The release candidate number"
28 }
29
30 function tag_version() {
31     set -x
32     for proj in llvm cfe dragonegg test-suite compiler-rt libcxx libcxxabi ; do
33         if ! svn ls $base_url/$proj/branches/release_$release > /dev/null 2>&1 ; then
34             svn copy -m "Creating release_$release branch" \
35                 $base_url/$proj/trunk \
36                 $base_url/$proj/branches/release_$release
37         fi
38     done
39     set +x
40 }
41
42 function tag_release_candidate() {
43     set -x
44     for proj in llvm cfe dragonegg test-suite compiler-rt libcxx libcxxabi ; do
45         if ! svn ls $base_url/$proj/tags/RELEASE_$release > /dev/null 2>&1 ; then
46             svn mkdir -m "Creating release directory for release_$release." $base_url/$proj/tags/RELEASE_$release
47         fi
48         if ! svn ls $base_url/$proj/tags/RELEASE_$release/rc$rc > /dev/null 2>&1 ; then
49             svn copy -m "Creating release candidate $rc from release_$release branch" \
50                 $base_url/$proj/branches/release_$release \
51                 $base_url/$proj/tags/RELEASE_$release/rc$rc
52         fi
53     done
54     set +x
55 }
56
57 while [ $# -gt 0 ]; do
58     case $1 in
59         -release | --release )
60             shift
61             release=$1
62             ;;
63         -rc | --rc )
64             shift
65             rc=$1
66             ;;
67         -h | --help | -help )
68             usage
69             exit 0
70             ;;
71         * )
72             echo "unknown option: $1"
73             usage
74             exit 1
75             ;;
76     esac
77     shift
78 done
79
80 if [ "x$release" = "x" ]; then
81     echo "error: need to specify a release version"
82     echo
83     usage
84     exit 1
85 fi
86
87 release=`echo $release | sed -e 's,\.,,g'`
88
89 if [ "x$rc" = "x" ]; then
90     tag_version
91 else
92     tag_release_candidate
93 fi
94
95 exit 1