diff options
author | thakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-27 02:42:42 +0000 |
---|---|---|
committer | thakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-27 02:42:42 +0000 |
commit | 54d768dbbdc71d359966e2f755f04b23e2c0b495 (patch) | |
tree | 1b560fb57926d587dda17aba9a6ef98bdf9bef5d /tools/clang | |
parent | 7bbf04d98c61a97ee45e032846b73a48ccee3922 (diff) | |
download | chromium_src-54d768dbbdc71d359966e2f755f04b23e2c0b495.zip chromium_src-54d768dbbdc71d359966e2f755f04b23e2c0b495.tar.gz chromium_src-54d768dbbdc71d359966e2f755f04b23e2c0b495.tar.bz2 |
roll clang 138187:138188
(Rolling just 1 revision because something farther on seems to tickle an ld crash, but I'd like to get the rest of this CL in.)
Also pass --disable-threads and --disable-pthreads to configure, for goma.
Also modify the script to try to download prebuilt binaries first. This is faster,
and makes sure the bots use the exact same binary as goma. The binaries are
downloaded from http://commondatastorage.googleapis.com/chromium-browser-clang/index.html
Also add a script that packages a clang build up into a tgz for uploading with
gsutil, based on code by ukai@.
Finally, if the svn checkout fails, remove the destination directory and try
again (for bots that have a checkout from before we had an internal llvm svn
mirror).
BUG=none
TEST=none
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=98416
Review URL: http://codereview.chromium.org/7741039
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@98541 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools/clang')
-rwxr-xr-x | tools/clang/scripts/package.sh | 54 | ||||
-rwxr-xr-x | tools/clang/scripts/update.sh | 30 |
2 files changed, 83 insertions, 1 deletions
diff --git a/tools/clang/scripts/package.sh b/tools/clang/scripts/package.sh new file mode 100755 index 0000000..fa0a575 --- /dev/null +++ b/tools/clang/scripts/package.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# Copyright (c) 2011 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# This script will check out llvm and clang, and then package the results up +# to a tgz file. + +THIS_DIR="$(dirname "${0}")" +LLVM_BUILD_DIR="${THIS_DIR}/../../../third_party/llvm-build" +LLVM_BIN_DIR="${LLVM_BUILD_DIR}/Release+Asserts/bin" +LLVM_LIB_DIR="${LLVM_BUILD_DIR}/Release+Asserts/lib" + +set -ex + +# Do a clobber build. +rm -rf "${LLVM_BUILD_DIR}" +"${THIS_DIR}"/update.sh + +R=$("${LLVM_BIN_DIR}/clang" --version | \ + sed -ne 's/clang version .*(trunk \([0-9]*\))/\1/p') + +PDIR=clang-$R +rm -rf $PDIR +mkdir $PDIR +mkdir $PDIR/bin +mkdir $PDIR/lib + +# Copy clang into pdir, symlink clang++ to it. +cp "${LLVM_BIN_DIR}/clang" $PDIR/bin/ +(cd $PDIR/bin && ln -sf clang clang++ && cd -) + +# Copy plugins. Some of the dylibs are pretty big, so copy only the ones we +# care about. +if [ "$(uname -s)" = "Darwin" ]; then + cp "${LLVM_LIB_DIR}/libFindBadConstructs.dylib" $PDIR/lib +else + cp "${LLVM_LIB_DIR}/libFindBadConstructs.so" $PDIR/lib +fi + +# Copy built-in headers (lib/clang/3.0/include). +cp -R "${LLVM_LIB_DIR}/clang" $PDIR/lib + +tar zcf $PDIR.tgz -C $PDIR bin lib + +if [ "$(uname -s)" = "Darwin" ]; then + PLATFORM=Mac +else + PLATFORM=Linux_x64 +fi + +echo To upload, run: +echo gsutil cp -a public-read $PDIR.tgz \ + gs://chromium-browser-clang/$PLATFORM/$PDIR.tgz diff --git a/tools/clang/scripts/update.sh b/tools/clang/scripts/update.sh index 352eff1..27abeab 100755 --- a/tools/clang/scripts/update.sh +++ b/tools/clang/scripts/update.sh @@ -34,11 +34,37 @@ fi # To always force a new build if someone interrupts their build half way. rm -f "${STAMP_FILE}" +# Check if there's a prebuilt binary and if so just fetch that. That's faster, +# and goma relies on having matching binary hashes on client and server too. +CDS_URL=http://commondatastorage.googleapis.com/chromium-browser-clang +CDS_FILE="clang-${CLANG_REVISION}.tgz" +echo Trying to download prebuilt clang +if [ "$(uname -s)" = "Linux" ]; then + wget "${CDS_URL}/Linux_x64/${CDS_FILE}" || rm -f "${CDS_FILE}" +elif [ "$(uname -s)" = "Darwin" ]; then + curl -L --fail -O "${CDS_URL}/Mac/${CDS_FILE}" || rm -f "${CDS_FILE}" +fi +if [ -f "${CDS_FILE}" ]; then + rm -rf "${LLVM_BUILD_DIR}/Release+Asserts" + mkdir -p "${LLVM_BUILD_DIR}/Release+Asserts" + tar -xzf "${CDS_FILE}" -C "${LLVM_BUILD_DIR}/Release+Asserts" + echo clang "${CLANG_REVISION}" unpacked + echo "${CLANG_REVISION}" > "${STAMP_FILE}" + exit 0 +else + echo Did not find prebuilt clang at r"${CLANG_REVISION}", building +fi + if grep -q 'src/third_party/llvm":' "${DEPS_FILE}"; then echo LLVM pulled in through DEPS, skipping LLVM update step else echo Getting LLVM r"${CLANG_REVISION}" in "${LLVM_DIR}" - svn co --force "${LLVM_REPO_URL}/llvm/trunk@${CLANG_REVISION}" "${LLVM_DIR}" + if ! svn co --force "${LLVM_REPO_URL}/llvm/trunk@${CLANG_REVISION}" \ + "${LLVM_DIR}"; then + echo Checkout failed, retrying + rm -rf "${LLVM_DIR}" + svn co --force "${LLVM_REPO_URL}/llvm/trunk@${CLANG_REVISION}" "${LLVM_DIR}" + fi fi if grep -q 'src/third_party/llvm/tools/clang":' "${DEPS_FILE}"; then @@ -59,6 +85,8 @@ cd "${LLVM_BUILD_DIR}" if [ ! -f ./config.status ]; then ../llvm/configure \ --enable-optimized \ + --disable-threads \ + --disable-pthreads \ --without-llvmgcc \ --without-llvmgxx fi |