Home | History | Annotate | Download | only in release
      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 rebranch="no"
     20 
     21 base_url="https://llvm.org/svn/llvm-project"
     22 
     23 function usage() {
     24     echo "usage: `basename $0` -release <num> [-rebranch]"
     25     echo "usage: `basename $0` -release <num> -rc <num>"
     26     echo " "
     27     echo "  -release <num>  The version number of the release"
     28     echo "  -rc <num>       The release candidate number"
     29     echo "  -rebranch       Remove existing branch, if present, before branching"
     30     echo "  -final          Tag final release candidate"
     31 }
     32 
     33 function tag_version() {
     34     set -x
     35     for proj in llvm cfe dragonegg test-suite compiler-rt ; do
     36         if svn ls $base_url/$proj/branches/release_$release > /dev/null 2>&1 ; then
     37             if [ $rebranch = "no" ]; then
     38                 continue
     39             fi
     40             svn remove -m "Removing old release_$release branch for rebranching." \
     41                 $base_url/$proj/branches/release_$release
     42         fi
     43         svn copy -m "Creating release_$release branch" \
     44             $base_url/$proj/trunk \
     45             $base_url/$proj/branches/release_$release
     46     done
     47     set +x
     48 }
     49 
     50 function tag_release_candidate() {
     51     set -x
     52     for proj in llvm cfe dragonegg test-suite compiler-rt ; do
     53         if ! svn ls $base_url/$proj/tags/RELEASE_$release > /dev/null 2>&1 ; then
     54             svn mkdir -m "Creating release directory for release_$release." $base_url/$proj/tags/RELEASE_$release
     55         fi
     56         if ! svn ls $base_url/$proj/tags/RELEASE_$release/$rc > /dev/null 2>&1 ; then
     57             svn copy -m "Creating release candidate $rc from release_$release branch" \
     58                 $base_url/$proj/branches/release_$release \
     59                 $base_url/$proj/tags/RELEASE_$release/$rc
     60         fi
     61     done
     62     set +x
     63 }
     64 
     65 while [ $# -gt 0 ]; do
     66     case $1 in
     67         -release | --release )
     68             shift
     69             release=$1
     70             ;;
     71         -rc | --rc )
     72             shift
     73             rc="rc$1"
     74             ;;
     75         -rebranch | --rebranch )
     76             rebranch="yes"
     77             ;;
     78         -final | --final )
     79             rc="final"
     80             ;;
     81         -h | --help | -help )
     82             usage
     83             exit 0
     84             ;;
     85         * )
     86             echo "unknown option: $1"
     87             usage
     88             exit 1
     89             ;;
     90     esac
     91     shift
     92 done
     93 
     94 if [ "x$release" = "x" ]; then
     95     echo "error: need to specify a release version"
     96     echo
     97     usage
     98     exit 1
     99 fi
    100 
    101 release=`echo $release | sed -e 's,\.,,g'`
    102 
    103 if [ "x$rc" = "x" ]; then
    104     tag_version
    105 else
    106     tag_release_candidate
    107 fi
    108 
    109 exit 1
    110