| #!/bin/bash |
| # ----------------------------------------------------------------------------- |
| # Runs the custom version of Buck required by ONOS. |
| # ----------------------------------------------------------------------------- |
| |
| set -e |
| |
| BUCK_URL="http://onlab.vicci.org/onos/third-party/buck-v2016.11.12.01.zip" |
| BUCK_SHA="c7472ed3046b6126d3eab2d06cccae2f488e3d85" |
| REQUIRED_VERSION="buck version 50b259823655bd5f5f4be7a1e15fb22b4a2e62d5" |
| |
| [ "-U" = "$1" ] && shift && FORCE_UPDATE=True |
| |
| ROOT_DIR=${ONOS_ROOT:-"$( cd "$( dirname "${BASH_SOURCE[0]}" )/../.." && pwd )"} |
| |
| mkdir -p $ROOT_DIR/bin |
| pushd $ROOT_DIR/bin > /dev/null |
| |
| if [ -n "$FORCE_UPDATE" ] || [ ! -f "buck" ] || [ "$REQUIRED_VERSION" != "$(cat .buck_version)" ]; then |
| echo "Updating Buck..." |
| rm -fr .buck_version buck plugins |
| mkdir -p cache |
| BUCK_FILE=$(basename $BUCK_URL) |
| # Check the local cache; download to cache if required |
| [ -f "cache/$BUCK_FILE" ] || curl -o cache/$BUCK_FILE -L $BUCK_URL |
| if [ -n "$(which shasum)" ]; then |
| SHA=$(shasum cache/$BUCK_FILE | cut -d' ' -f1) |
| [ "$SHA" != "$BUCK_SHA" ] && |
| echo "ERROR: Downloaded SHA ($SHA) does not match expected SHA ($BUCK_SHA)" && |
| rm -f cache/$BUCK_FILE && exit 1 |
| else |
| echo "SHA cannot be verified" |
| fi |
| unzip cache/$BUCK_FILE |
| # Kill buckd |
| ps -ef | egrep buckd | grep -v egrep | cut -c7-11 | xargs kill 2>/dev/null || : |
| rm -rf $ROOT_DIR/buck-out |
| printf "Successfully updated Buck in $ROOT_DIR/bin/buck to $BUCK_FILE\n\n" |
| fi |
| popd > /dev/null |
| |
| BUCK=$ROOT_DIR/bin/buck |
| |
| # Finally, run the Buck command... |
| NO_BUCKD=1 $BUCK "$@" |