Index: tools/clang/scripts/repackage.sh |
diff --git a/tools/clang/scripts/repackage.sh b/tools/clang/scripts/repackage.sh |
new file mode 100755 |
index 0000000000000000000000000000000000000000..e19ab7e84048957ab459a7d38c7e0cb33a4ad6c9 |
--- /dev/null |
+++ b/tools/clang/scripts/repackage.sh |
@@ -0,0 +1,67 @@ |
+#!/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 'set(LIBRARYNAME' "$THIS_DIR"/../blink_gc_plugin/CMakeLists.txt \ |
+ | cut -d ' ' -f 2 | tr -d ')') |
+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/" |
+if [ "$(uname -s)" = "Darwin" ]; then |
+ tar zcf ${PDIR}_repack.tgz -C "$LLVM_TAR_DIR" bin include lib buildlog.txt |
+else |
+ tar zcf ${PDIR}_repack.tgz -C "$LLVM_TAR_DIR" bin lib buildlog.txt |
+fi |
+ |
+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 |