Support a 'final' release candidate tag.
[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     echo "  -final          Tag final release candidate"
29 }
30
31 function tag_version() {
32     set -x
33     for proj in llvm cfe dragonegg test-suite compiler-rt libcxx libcxxabi ; do
34         if ! svn ls $base_url/$proj/branches/release_$release > /dev/null 2>&1 ; then
35             svn copy -m "Creating release_$release branch" \
36                 $base_url/$proj/trunk \
37                 $base_url/$proj/branches/release_$release
38         fi
39     done
40     set +x
41 }
42
43 function tag_release_candidate() {
44     set -x
45     for proj in llvm cfe dragonegg test-suite compiler-rt libcxx libcxxabi ; do
46         if ! svn ls $base_url/$proj/tags/RELEASE_$release > /dev/null 2>&1 ; then
47             svn mkdir -m "Creating release directory for release_$release." $base_url/$proj/tags/RELEASE_$release
48         fi
49         if ! svn ls $base_url/$proj/tags/RELEASE_$release/$rc > /dev/null 2>&1 ; then
50             svn copy -m "Creating release candidate $rc from release_$release branch" \
51                 $base_url/$proj/branches/release_$release \
52                 $base_url/$proj/tags/RELEASE_$release/$rc
53         fi
54     done
55     set +x
56 }
57
58 while [ $# -gt 0 ]; do
59     case $1 in
60         -release | --release )
61             shift
62             release=$1
63             ;;
64         -rc | --rc )
65             shift
66             rc="rc$1"
67             ;;
68         -final | --final )
69             rc="final"
70             ;;
71         -h | --help | -help )
72             usage
73             exit 0
74             ;;
75         * )
76             echo "unknown option: $1"
77             usage
78             exit 1
79             ;;
80     esac
81     shift
82 done
83
84 if [ "x$release" = "x" ]; then
85     echo "error: need to specify a release version"
86     echo
87     usage
88     exit 1
89 fi
90
91 release=`echo $release | sed -e 's,\.,,g'`
92
93 if [ "x$rc" = "x" ]; then
94     tag_version
95 else
96     tag_release_candidate
97 fi
98
99 exit 1