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