X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=utils%2Frelease%2Ftag.sh;h=503413b9c444ebefb03dac6f57c76590c919601d;hb=872808e946f3f8be1b30a6672697c2ba8e12f9e1;hp=d2d9911815fac9f66f6ecdf9f3ffd320e4b80c5e;hpb=10f3210477808794fa23ff643a59d468e5c3101b;p=oota-llvm.git diff --git a/utils/release/tag.sh b/utils/release/tag.sh index d2d9911815f..503413b9c44 100755 --- a/utils/release/tag.sh +++ b/utils/release/tag.sh @@ -16,39 +16,53 @@ set -e release="" rc="" +rebranch="no" +projects="llvm cfe dragonegg test-suite compiler-rt libcxx libcxxabi clang-tools-extra polly lldb lld openmp" +dryrun="" +revision="HEAD" base_url="https://llvm.org/svn/llvm-project" function usage() { - echo "usage: `basename $0` -release " - echo "usage: `basename $0` -release -rc " + echo "usage: `basename $0` -release [-rebranch] [-revision ] [-dry-run]" + echo "usage: `basename $0` -release -rc [-dry-run]" echo " " - echo " -release The version number of the release" - echo " -rc The release candidate number" + echo " -release The version number of the release" + echo " -rc The release candidate number" + echo " -rebranch Remove existing branch, if present, before branching" + echo " -final Tag final release candidate" + echo " -revision Revision to branch off (default: HEAD)" + echo " -dry-run Make no changes to the repository, just print the commands" } function tag_version() { set -x - for proj in llvm cfe dragonegg test-suite compiler-rt libcxx libcxxabi ; do - if ! svn ls $base_url/$proj/branches/release_$release > /dev/null 2>&1 ; then - svn copy -m "Creating release_$release branch" \ - $base_url/$proj/trunk \ - $base_url/$proj/branches/release_$release + for proj in $projects; do + if svn ls $base_url/$proj/branches/release_$branch_release > /dev/null 2>&1 ; then + if [ $rebranch = "no" ]; then + continue + fi + ${dryrun} svn remove -m "Removing old release_$branch_release branch for rebranching." \ + $base_url/$proj/branches/release_$branch_release fi + ${dryrun} svn copy -m "Creating release_$branch_release branch off revision ${revision}" \ + -r ${revision} \ + $base_url/$proj/trunk \ + $base_url/$proj/branches/release_$branch_release done set +x } function tag_release_candidate() { set -x - for proj in llvm cfe dragonegg test-suite compiler-rt libcxx libcxxabi ; 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 + for proj in $projects ; do + if ! svn ls $base_url/$proj/tags/RELEASE_$tag_release > /dev/null 2>&1 ; then + ${dryrun} svn mkdir -m "Creating release directory for release_$tag_release." $base_url/$proj/tags/RELEASE_$tag_release fi - if ! svn ls $base_url/$proj/tags/RELEASE_$release/rc$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$rc + if ! svn ls $base_url/$proj/tags/RELEASE_$tag_release/$rc > /dev/null 2>&1 ; then + ${dryrun} svn copy -m "Creating release candidate $rc from release_$tag_release branch" \ + $base_url/$proj/branches/release_$branch_release \ + $base_url/$proj/tags/RELEASE_$tag_release/$rc fi done set +x @@ -62,7 +76,20 @@ while [ $# -gt 0 ]; do ;; -rc | --rc ) shift - rc=$1 + rc="rc$1" + ;; + -rebranch | --rebranch ) + rebranch="yes" + ;; + -final | --final ) + rc="final" + ;; + -revision | --revision ) + shift + revision="$1" + ;; + -dry-run | --dry-run ) + dryrun="echo" ;; -h | --help | -help ) usage @@ -84,12 +111,20 @@ if [ "x$release" = "x" ]; then exit 1 fi -release=`echo $release | sed -e 's,\.,,g'` +branch_release=`echo $release | sed -e 's,\([0-9]*\.[0-9]*\).*,\1,' | sed -e 's,\.,,g'` +tag_release=`echo $release | sed -e 's,\.,,g'` if [ "x$rc" = "x" ]; then tag_version else + if [ "$revision" != "HEAD" ]; then + echo "error: cannot use -revision with -rc" + echo + usage + exit 1 + fi + tag_release_candidate fi -exit 1 +exit 0