1e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#!/bin/bash
2e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#
3e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao# Creates LLVM SVN snapshots: llvm-$REV.tar.bz2 and llvm-gcc-4.2-$REV.tar.bz2,
4e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao# where $REV is an SVN revision of LLVM.  This is used for creating stable
5e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao# tarballs which can be used to build known-to-work crosstools.
6e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#
7e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao# Syntax:
8e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#   $0 [REV] -- grabs the revision $REV from SVN; if not specified, grabs the
9e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#   latest SVN revision.
10e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
11e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liaoset -o nounset
12e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liaoset -o errexit
13e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
14e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liaoreadonly LLVM_PROJECT_SVN="http://llvm.org/svn/llvm-project"
15e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
16e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei LiaogetLatestRevisionFromSVN() {
17e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  svn info ${LLVM_PROJECT_SVN} | egrep ^Revision | sed 's/^Revision: //'
18e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao}
19e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
20e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liaoreadonly REV="${1:-$(getLatestRevisionFromSVN)}"
21e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
22e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei LiaocreateTarballFromSVN() {
23e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  local module=$1
24e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  local log="${module}.log"
25e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  echo "Running: svn export -r ${REV} ${module}; log in ${log}"
26e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  svn -q export -r ${REV} ${LLVM_PROJECT_SVN}/${module}/trunk \
27e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao      ${module} > ${log} 2>&1
28e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
29e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  # Create "module-revision.tar.bz2" packages from the SVN checkout dirs.
30e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  local tarball="${module}-${REV}.tar.bz2"
31e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  echo "Creating tarball: ${tarball}"
32e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  tar cjf ${tarball} ${module}
33e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
34e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  echo "Cleaning up '${module}'"
35e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  rm -rf ${module} ${log}
36e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao}
37e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
38e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liaofor module in "llvm" "llvm-gcc-4.2"; do
39e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao  createTarballFromSVN ${module}
40e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liaodone
41e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
42