diff --git a/scripts/package_infer_source_with_clang_binaries.sh b/scripts/package_infer_source_with_clang_binaries.sh new file mode 100755 index 000000000..2eff84c24 --- /dev/null +++ b/scripts/package_infer_source_with_clang_binaries.sh @@ -0,0 +1,70 @@ +#!/bin/bash + +# Copyright (c) 2013 - present Facebook, Inc. +# All rights reserved. +# +# This source code is licensed under the BSD style license found in the +# LICENSE file in the root directory of this source tree. An additional grant +# of patent rights can be found in the PATENTS file in the same directory. + +set -x +set -e + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +ROOT_INFER_DIR=$SCRIPT_DIR/.. +CLANG_PLUGIN_DIR=$ROOT_INFER_DIR/facebook-clang-plugins +PLATFORM=`uname` +INFER_SOURCE=$ROOT_INFER_DIR/infer-source + +#Build infer and facebook-clang-plugins +cd $ROOT_INFER_DIR +git submodule update --init --recursive +facebook-clang-plugins/clang/setup.sh +./compile-fcp.sh +make -C infer + +VERSION=$($ROOT_INFER_DIR/infer/bin/infer --version 2>&1 | head -1 | awk '{print $3}') +if [ $PLATFORM == 'Darwin' ]; then + RELEASE_NAME=infer-osx-$VERSION +else + RELEASE_NAME=infer-linux64-$VERSION +fi +RELEASE_TARBALL=$RELEASE_NAME.tar.xz + +# Build package. +PKG_DIR=$ROOT_INFER_DIR/$RELEASE_NAME + +#Get a fresh copy of infer source +git clone https://github.com/facebook/infer.git $INFER_SOURCE + +# Copy infer source +mkdir -p $PKG_DIR +rsync -a $INFER_SOURCE/ $PKG_DIR + +# Add facebook-clang-plugin binaries +PKG_PLUGIN_DIR=$PKG_DIR/facebook-clang-plugins +mkdir -p $PKG_PLUGIN_DIR/clang/{bin,lib,include} +mkdir -p $PKG_PLUGIN_DIR/libtooling/build +mkdir -p $PKG_PLUGIN_DIR/clang-ocaml/build +cp $CLANG_PLUGIN_DIR/{CONTRIBUTING.md,LICENSE,LLVM-LICENSE,PATENTS,README.md} $PKG_PLUGIN_DIR +cp -r $CLANG_PLUGIN_DIR/clang/bin/clang* $PKG_PLUGIN_DIR/clang/bin +cp -r $CLANG_PLUGIN_DIR/clang/lib/* $PKG_PLUGIN_DIR/clang/lib +cp -r $CLANG_PLUGIN_DIR/clang/include/* $PKG_PLUGIN_DIR/clang/include +rm -f $PKG_PLUGIN_DIR/clang/lib/*.a + +cp -r $CLANG_PLUGIN_DIR/libtooling/build/* $PKG_PLUGIN_DIR/libtooling/build +cp -r $CLANG_PLUGIN_DIR/clang-ocaml/build/* $PKG_PLUGIN_DIR/clang-ocaml/build +cp -r $CLANG_PLUGIN_DIR/clang-ocaml/*.ml $PKG_PLUGIN_DIR/clang-ocaml/ + +FBONLY=FB-ONLY +if grep -r $FBONLY $PKG_DIR; then + echo "Found files marked $FBONLY" + exit 1 +fi + +cd $ROOT_INFER_DIR && tar cJf $RELEASE_TARBALL $RELEASE_NAME + +# Cleanup. +rm -rf $PKG_DIR $INFER_SOURCE + +# vim: sw=2 ts=2 et: