#!/bin/bash # Copyright 2014 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. # # Download the newest version of Closure Compiler, build it and put into Chrome # source tree. Also update externs/chrome_extensions.js. readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" readonly TEMP_DIR=$(mktemp -d) readonly COMPILER_PATH="${SCRIPT_DIR}/compiler/compiler.jar" readonly EXTERNS_PATH="${SCRIPT_DIR}/externs/chrome_extensions.js" cleanup() { rm -rf "${TEMP_DIR}" } get_compiler_version() { java -jar "${1}" --version | grep ^Version: | cut -d' ' -f2 } get_externs_sha1() { sha1sum "${EXTERNS_PATH}" | cut -d' ' -f1 } trap cleanup SIGINT SIGHUP SIGTERM previous_compiler_version=$(get_compiler_version ${COMPILER_PATH}) previous_externs_sha1=$(get_externs_sha1) cd "${TEMP_DIR}" echo "Cloning Closure Compiler repo" git clone https://github.com/google/closure-compiler.git cd closure-compiler echo "Building Closure Compiler" ant jar if [[ "$?" -ne 0 ]]; then echo "Failed to build jar, copying nothing" >&2 cleanup exit 1 fi new_compiler_version=$(get_compiler_version "build/compiler.jar") if [[ "${new_compiler_version}" != "${previous_compiler_version}" ]]; then cp build/compiler.jar "${COMPILER_PATH}" echo "Compiler version changed; re-building runner.jar" "${SCRIPT_DIR}/runner/build_runner_jar.py" compiler_jar_range="compiler.jar: ${previous_compiler_version} -> ${new_compiler_version}" fi (cat < "${EXTERNS_PATH}" // SSSSSSSSSSSSSSS TTTTTTTTTTTTTTTTTTTTTTT OOOOOOOOO PPPPPPPPPPPPPPPPP // SS:::::::::::::::ST:::::::::::::::::::::T OO:::::::::OO P::::::::::::::::P // S:::::SSSSSS::::::ST:::::::::::::::::::::T OO:::::::::::::OO P::::::PPPPPP:::::P // S:::::S SSSSSSST:::::TT:::::::TT:::::TO:::::::OOO:::::::OPP:::::P P:::::P // S:::::S TTTTTT T:::::T TTTTTTO::::::O O::::::O P::::P P:::::P // S:::::S T:::::T O:::::O O:::::O P::::P P:::::P // S::::SSSS P::::PPPPPP:::::P // SS::::::SSSSS This file is generated. To update it, P:::::::::::::PP // SSS::::::::SS run bump_compiler_version. P::::PPPPPPPPP // SSSSSS::::S P::::P // S:::::S T:::::T O:::::O O:::::O P::::P // S:::::S T:::::T O::::::O O::::::O P::::P // SSSSSSS S:::::S TT:::::::TT O:::::::OOO:::::::OPP::::::PP // S::::::SSSSSS:::::S T:::::::::T OO:::::::::::::OO P::::::::P // S:::::::::::::::SS T:::::::::T OO:::::::::OO P::::::::P // SSSSSSSSSSSSSSS TTTTTTTTTTT OOOOOOOOO PPPPPPPPPP EOT new_externs_sha1=$(get_externs_sha1) if [[ "${new_externs_sha1}" != "${previous_externs_sha1}" ]]; then chrome_extensions_range="chrome_extensions.js: ${previous_externs_sha1} -> ${new_externs_sha1}" fi echo echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" echo "@" echo "@ ROLL RESULTS:" echo "@" echo "@ Compiler version:" echo "@ Previous: ${previous_compiler_version}" echo "@ New: ${new_compiler_version}" echo "@" echo "@ Externs SHA1:" echo "@ Previous: ${previous_externs_sha1}" echo "@ New: ${new_externs_sha1}" echo "@" echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" echo if [[ -z "${compiler_jar_range}" ]] && [[ -z "${chrome_extensions_range}" ]]; then echo "Nothing to update" else echo "git commit -a -m 'Bumping closure compiler:" echo if [[ ! -z "${compiler_jar_range}" ]]; then echo "${compiler_jar_range}"; fi if [[ ! -z "${chrome_extensions_range}" ]]; then echo "${chrome_extensions_range}"; fi echo "TBR=" echo "BUG='" echo echo "git cl upload" fi cleanup