diff options
author | thakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-18 22:08:56 +0000 |
---|---|---|
committer | thakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-18 22:08:56 +0000 |
commit | 937f5f184036b3cd4d1500c6edd22db6426f3506 (patch) | |
tree | 855ef4cc82e4088845a6371156b3f39c558dbee9 /tools/clang | |
parent | c79b29993fbe0299a69cacce481ec42fbe1e432e (diff) | |
download | chromium_src-937f5f184036b3cd4d1500c6edd22db6426f3506.zip chromium_src-937f5f184036b3cd4d1500c6edd22db6426f3506.tar.gz chromium_src-937f5f184036b3cd4d1500c6edd22db6426f3506.tar.bz2 |
Make the clang update script really fast if the right revision's already there.
This way, people can add it to their DEPS hooks without going crazy.
BUG=none
TEST=none
TBR=mark (commit-bot please accept "LG")
Review URL: http://codereview.chromium.org/7625002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97369 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools/clang')
-rwxr-xr-x | tools/clang/scripts/update.sh | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/tools/clang/scripts/update.sh b/tools/clang/scripts/update.sh index ff1c151..352eff1 100755 --- a/tools/clang/scripts/update.sh +++ b/tools/clang/scripts/update.sh @@ -6,9 +6,11 @@ # This script will check out llvm and clang into third_party/llvm and build it. THIS_DIR="$(dirname "${0}")" -LLVM_DIR="${THIS_DIR}"/../../../third_party/llvm -CLANG_DIR="${LLVM_DIR}"/tools/clang -DEPS_FILE="${THIS_DIR}"/../../../DEPS +LLVM_DIR="${THIS_DIR}/../../../third_party/llvm" +LLVM_BUILD_DIR="${LLVM_DIR}/../llvm-build" +CLANG_DIR="${LLVM_DIR}/tools/clang" +DEPS_FILE="${THIS_DIR}/../../../DEPS" +STAMP_FILE="${LLVM_BUILD_DIR}/cr_build_revision" # ${A:-a} returns $A if it's set, a else. LLVM_REPO_URL=${LLVM_URL:-http://llvm.org/svn/llvm-project} @@ -21,18 +23,29 @@ set -e # DEPS if they just want to give clang a try. CLANG_REVISION=$(grep 'clang_revision":' "${DEPS_FILE}" | egrep -o [[:digit:]]+) +# Check if there's anything to be done, exit early if not. +if [ -f "${STAMP_FILE}" ]; then + PREVIOUSLY_BUILT_REVISON=$(cat "${STAMP_FILE}") + if [ "${PREVIOUSLY_BUILT_REVISON}" = "${CLANG_REVISION}" ]; then + echo "Clang already at ${CLANG_REVISION}" + exit 0 + fi +fi +# To always force a new build if someone interrupts their build half way. +rm -f "${STAMP_FILE}" + 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}" + svn co --force "${LLVM_REPO_URL}/llvm/trunk@${CLANG_REVISION}" "${LLVM_DIR}" fi if grep -q 'src/third_party/llvm/tools/clang":' "${DEPS_FILE}"; then echo clang pulled in through DEPS, skipping clang update step else echo Getting clang r"${CLANG_REVISION}" in "${CLANG_DIR}" - svn co --force "${LLVM_REPO_URL}"/cfe/trunk@"${CLANG_REVISION}" "${CLANG_DIR}" + svn co --force "${LLVM_REPO_URL}/cfe/trunk@${CLANG_REVISION}" "${CLANG_DIR}" fi # Echo all commands. @@ -41,8 +54,8 @@ set -x # Build clang (in a separate directory). # The clang bots have this path hardcoded in built/scripts/slave/compile.py, # so if you change it you also need to change these links. -mkdir -p "${LLVM_DIR}"/../llvm-build -cd "${LLVM_DIR}"/../llvm-build +mkdir -p "${LLVM_BUILD_DIR}" +cd "${LLVM_BUILD_DIR}" if [ ! -f ./config.status ]; then ../llvm/configure \ --enable-optimized \ @@ -62,12 +75,15 @@ cd - # Build plugin. # Copy it into the clang tree and use clang's build system to compile the # plugin. -PLUGIN_SRC_DIR="${THIS_DIR}"/../plugins -PLUGIN_DST_DIR="${LLVM_DIR}"/../llvm/tools/clang/tools/chrome-plugin -PLUGIN_BUILD_DIR="${LLVM_DIR}"/../llvm-build/tools/clang/tools/chrome-plugin +PLUGIN_SRC_DIR="${THIS_DIR}/../plugins" +PLUGIN_DST_DIR="${LLVM_DIR}/tools/clang/tools/chrome-plugin" +PLUGIN_BUILD_DIR="${LLVM_BUILD_DIR}/tools/clang/tools/chrome-plugin" rm -rf "${PLUGIN_DST_DIR}" cp -R "${PLUGIN_SRC_DIR}" "${PLUGIN_DST_DIR}" rm -rf "${PLUGIN_BUILD_DIR}" mkdir -p "${PLUGIN_BUILD_DIR}" -cp "${PLUGIN_SRC_DIR}"/Makefile "${PLUGIN_BUILD_DIR}" +cp "${PLUGIN_SRC_DIR}/Makefile" "${PLUGIN_BUILD_DIR}" make -j"${NUM_JOBS}" -C "${PLUGIN_BUILD_DIR}" + +# After everything is done, log success for this revision. +echo "${CLANG_REVISION}" > "${STAMP_FILE}" |