summaryrefslogtreecommitdiffstats
path: root/tools/clang
diff options
context:
space:
mode:
authorthakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-27 02:42:42 +0000
committerthakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-27 02:42:42 +0000
commit54d768dbbdc71d359966e2f755f04b23e2c0b495 (patch)
tree1b560fb57926d587dda17aba9a6ef98bdf9bef5d /tools/clang
parent7bbf04d98c61a97ee45e032846b73a48ccee3922 (diff)
downloadchromium_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-xtools/clang/scripts/package.sh54
-rwxr-xr-xtools/clang/scripts/update.sh30
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