| #!/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. |
| |
| # This script will check out llvm and clang, build a full package |
| # with the latest plugin revisions and then repackage an existing |
| # clang-package with the new plugin revisions. |
| |
| # The new package can be uploaded to replace the existing clang |
| # package at the same clang revision. |
| |
| THIS_DIR="$(dirname "${0}")" |
| LLVM_BUILD_DIR="${THIS_DIR}/../../../third_party/llvm-build" |
| LLVM_TAR_DIR="${LLVM_BUILD_DIR}/Release+Asserts" |
| LLVM_BIN_DIR="${LLVM_TAR_DIR}/bin" |
| LLVM_LIB_DIR="${LLVM_TAR_DIR}/lib" |
| |
| set -eu |
| |
| if [ "$(uname -s)" = "Darwin" ]; then |
| PLATFORM=Mac |
| SO_EXT="dylib" |
| else |
| PLATFORM=Linux_x64 |
| SO_EXT="so" |
| fi |
| |
| # Build clang with the new plugin revisions. |
| "$THIS_DIR"/package.sh $@ |
| |
| R=$("${LLVM_BIN_DIR}/clang" --version | \ |
| sed -ne 's/clang version .*(trunk \([0-9]*\))/\1/p') |
| PDIR=clang-$R |
| |
| if [ ! -f "$PDIR.tgz" ]; then |
| echo "Could not find package archive $PDIR.tgz generated by package.sh" |
| exit 1 |
| fi |
| |
| # We don't want to change the clang binary, so fetch the current clang |
| # package and add the plugin shared-libraries to the existing package. |
| rm -rf $LLVM_BUILD_DIR |
| "$THIS_DIR"/update.sh |
| |
| LIBNAME=$(grep LIBRARYNAME "$THIS_DIR"/../blink_gc_plugin/Makefile \ |
| | cut -d ' ' -f 3) |
| |
| LIBFILE=lib$LIBNAME.$SO_EXT |
| |
| # Check that we are actually creating the plugin at a new revision. |
| if [ -f "$LLVM_LIB_DIR/$LIBFILE" ]; then |
| echo "The plugin revision $LIBNAME is already in the existing package." |
| exit 1 |
| fi |
| |
| cp $PDIR/lib/$LIBFILE "$LLVM_LIB_DIR/" |
| tar zcf ${PDIR}_repack.tgz -C "$LLVM_TAR_DIR" bin lib buildlog.txt |
| |
| echo The clang package has been repackaged with $LIBNAME |
| echo To upload, run: |
| echo gsutil cp -a public-read ${PDIR}_repack.tgz \ |
| gs://chromium-browser-clang/$PLATFORM/$PDIR.tgz |