Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(652)

Side by Side Diff: tools/clang/scripts/update.sh

Issue 980633003: Clang update script: download pre-built modern gcc and CMake if necessary (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Simplify Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env bash 1 #!/usr/bin/env bash
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 # This script will check out llvm and clang into third_party/llvm and build it. 6 # This script will check out llvm and clang into third_party/llvm and build it.
7 7
8 # Do NOT CHANGE this if you don't know what you're doing -- see 8 # Do NOT CHANGE this if you don't know what you're doing -- see
9 # https://code.google.com/p/chromium/wiki/UpdatingClang 9 # https://code.google.com/p/chromium/wiki/UpdatingClang
10 # Reverting problematic clang rolls is safe, though. 10 # Reverting problematic clang rolls is safe, though.
(...skipping 16 matching lines...) Expand all
27 ABS_CHROMIUM_TOOLS_DIR="${PWD}/${CHROMIUM_TOOLS_DIR}" 27 ABS_CHROMIUM_TOOLS_DIR="${PWD}/${CHROMIUM_TOOLS_DIR}"
28 ABS_LIBCXX_DIR="${PWD}/${LIBCXX_DIR}" 28 ABS_LIBCXX_DIR="${PWD}/${LIBCXX_DIR}"
29 ABS_LIBCXXABI_DIR="${PWD}/${LIBCXXABI_DIR}" 29 ABS_LIBCXXABI_DIR="${PWD}/${LIBCXXABI_DIR}"
30 ABS_LLVM_DIR="${PWD}/${LLVM_DIR}" 30 ABS_LLVM_DIR="${PWD}/${LLVM_DIR}"
31 ABS_LLVM_BUILD_DIR="${PWD}/${LLVM_BUILD_DIR}" 31 ABS_LLVM_BUILD_DIR="${PWD}/${LLVM_BUILD_DIR}"
32 ABS_COMPILER_RT_DIR="${PWD}/${COMPILER_RT_DIR}" 32 ABS_COMPILER_RT_DIR="${PWD}/${COMPILER_RT_DIR}"
33 33
34 # ${A:-a} returns $A if it's set, a else. 34 # ${A:-a} returns $A if it's set, a else.
35 LLVM_REPO_URL=${LLVM_URL:-https://llvm.org/svn/llvm-project} 35 LLVM_REPO_URL=${LLVM_URL:-https://llvm.org/svn/llvm-project}
36 36
37 CDS_URL=https://commondatastorage.googleapis.com/chromium-browser-clang
38
37 if [[ -z "$GYP_DEFINES" ]]; then 39 if [[ -z "$GYP_DEFINES" ]]; then
38 GYP_DEFINES= 40 GYP_DEFINES=
39 fi 41 fi
40 if [[ -z "$GYP_GENERATORS" ]]; then 42 if [[ -z "$GYP_GENERATORS" ]]; then
41 GYP_GENERATORS= 43 GYP_GENERATORS=
42 fi 44 fi
43 45
44 46
45 # Die if any command dies, error on undefined variable expansions. 47 # Die if any command dies, error on undefined variable expansions.
46 set -eu 48 set -eu
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 force_local_build=yes 156 force_local_build=yes
155 157
156 # Skip local patches when using HEAD: they probably don't apply anymore. 158 # Skip local patches when using HEAD: they probably don't apply anymore.
157 with_patches= 159 with_patches=
158 160
159 if ! [[ "$GYP_DEFINES" =~ .*OS=android.* ]]; then 161 if ! [[ "$GYP_DEFINES" =~ .*OS=android.* ]]; then
160 # Only build the Android ASan rt when targetting Android. 162 # Only build the Android ASan rt when targetting Android.
161 with_android= 163 with_android=
162 fi 164 fi
163 165
164 if [[ "${OS}" == "Linux" ]] && [[ -z ${gcc_toolchain:-''} ]]; then 166 LLVM_BUILD_TOOLS_DIR="${ABS_LLVM_DIR}/../llvm-build-tools"
165 # Set gcc_toolchain on Linux; llvm-symbolizer needs the bundled libstdc++. 167
166 gcc_toolchain="$(dirname $(dirname $(which gcc)))" 168 if [[ "${OS}" == "Linux" ]] && [[ -z "${gcc_toolchain}" ]]; then
169 if [[ $(gcc -dumpversion) < "4.7.0" ]]; then
170 # We need a newer GCC version.
171 if [[ ! -e "${LLVM_BUILD_TOOLS_DIR}/gcc482" ]]; then
Nico 2015/03/05 03:55:18 This if seems to not work for some reason, looks l
172 echo "Downloading pre-built GCC 4.8.2"
173 mkdir -p "${LLVM_BUILD_TOOLS_DIR}"
174 curl --fail -L "${CDS_URL}/tools/gcc482.tgz" | \
175 tar vzxf - -C "${LLVM_BUILD_TOOLS_DIR}"
176 fi
177 gcc_toolchain="${LLVM_BUILD_TOOLS_DIR}/gcc482"
178 else
179 # Always set gcc_toolchain; llvm-symbolizer needs the bundled libstdc++.
180 gcc_toolchain="$(dirname $(dirname $(which gcc)))"
181 fi
182 fi
183
184 if [[ "${OS}" == "Linux" ]]; then
185 # TODO(hans): Might need to make this work on Mac eventually.
186 if [[ $(cmake --version | grep -Eo '[0-9.]+') < "3.0" ]]; then
187 # We need a newer CMake version.
188 if [[ ! -e "${LLVM_BUILD_TOOLS_DIR}/cmake310" ]]; then
189 echo "Downloading pre-built CMake 3.10"
190 mkdir -p "${LLVM_BUILD_TOOLS_DIR}"
191 curl --fail -L "${CDS_URL}/tools/cmake310.tgz" | \
192 tar vzxf - -C "${LLVM_BUILD_TOOLS_DIR}"
193 fi
194 export PATH="${LLVM_BUILD_TOOLS_DIR}/cmake310/bin:${PATH}"
Nico 2015/03/05 03:58:39 …and this should probably run before the `cmake --
195 fi
167 fi 196 fi
168 197
169 echo "LLVM_FORCE_HEAD_REVISION was set; using r${CLANG_REVISION}" 198 echo "LLVM_FORCE_HEAD_REVISION was set; using r${CLANG_REVISION}"
170 fi 199 fi
171 200
172 if [[ -n "$if_needed" ]]; then 201 if [[ -n "$if_needed" ]]; then
173 if [[ "${OS}" == "Darwin" ]]; then 202 if [[ "${OS}" == "Darwin" ]]; then
174 # clang is used on Mac. 203 # clang is used on Mac.
175 true 204 true
176 elif [[ "$GYP_DEFINES" =~ .*(clang|tsan|asan|lsan|msan)=1.* ]]; then 205 elif [[ "$GYP_DEFINES" =~ .*(clang|tsan|asan|lsan|msan)=1.* ]]; then
(...skipping 26 matching lines...) Expand all
203 exit 0 232 exit 0
204 fi 233 fi
205 fi 234 fi
206 # To always force a new build if someone interrupts their build half way. 235 # To always force a new build if someone interrupts their build half way.
207 rm -f "${STAMP_FILE}" 236 rm -f "${STAMP_FILE}"
208 237
209 238
210 if [[ -z "$force_local_build" ]]; then 239 if [[ -z "$force_local_build" ]]; then
211 # Check if there's a prebuilt binary and if so just fetch that. That's faster, 240 # Check if there's a prebuilt binary and if so just fetch that. That's faster,
212 # and goma relies on having matching binary hashes on client and server too. 241 # and goma relies on having matching binary hashes on client and server too.
213 CDS_URL=https://commondatastorage.googleapis.com/chromium-browser-clang
214 CDS_FILE="clang-${CLANG_REVISION}.tgz" 242 CDS_FILE="clang-${CLANG_REVISION}.tgz"
215 CDS_OUT_DIR=$(mktemp -d -t clang_download.XXXXXX) 243 CDS_OUT_DIR=$(mktemp -d -t clang_download.XXXXXX)
216 CDS_OUTPUT="${CDS_OUT_DIR}/${CDS_FILE}" 244 CDS_OUTPUT="${CDS_OUT_DIR}/${CDS_FILE}"
217 if [ "${OS}" = "Linux" ]; then 245 if [ "${OS}" = "Linux" ]; then
218 CDS_FULL_URL="${CDS_URL}/Linux_x64/${CDS_FILE}" 246 CDS_FULL_URL="${CDS_URL}/Linux_x64/${CDS_FILE}"
219 elif [ "${OS}" = "Darwin" ]; then 247 elif [ "${OS}" = "Darwin" ]; then
220 CDS_FULL_URL="${CDS_URL}/Mac/${CDS_FILE}" 248 CDS_FULL_URL="${CDS_URL}/Mac/${CDS_FILE}"
221 fi 249 fi
222 echo Trying to download prebuilt clang 250 echo Trying to download prebuilt clang
223 if which curl > /dev/null; then 251 if which curl > /dev/null; then
(...skipping 745 matching lines...) Expand 10 before | Expand all | Expand 10 after
969 997
970 if [[ -n "$run_tests" ]]; then 998 if [[ -n "$run_tests" ]]; then
971 # Run Chrome tool tests. 999 # Run Chrome tool tests.
972 ninja -C "${LLVM_BUILD_DIR}" cr-check-all 1000 ninja -C "${LLVM_BUILD_DIR}" cr-check-all
973 # Run the LLVM and Clang tests. 1001 # Run the LLVM and Clang tests.
974 ninja -C "${LLVM_BUILD_DIR}" check-all 1002 ninja -C "${LLVM_BUILD_DIR}" check-all
975 fi 1003 fi
976 1004
977 # After everything is done, log success for this revision. 1005 # After everything is done, log success for this revision.
978 echo "${CLANG_AND_PLUGINS_REVISION}" > "${STAMP_FILE}" 1006 echo "${CLANG_AND_PLUGINS_REVISION}" > "${STAMP_FILE}"
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698