| #!/bin/bash |
| # ----------------------------------------------------------------------------- |
| # Runs the custom version of Buck required by ONOS. |
| # ----------------------------------------------------------------------------- |
| |
| set -e |
| |
| BUCK_URL="https://github.com/bocon13/buck/releases/download/v2016.09.13.01/buck" |
| BUCK_SHA="e72cf2e9ef719fa81fd4e0d1b620f20448c10a9d" |
| REQUIRED_VERSION="buck version 0b60c3d7f8d54b2e6e6607749b748c0f240a6eb3" |
| |
| [ "-U" = "$1" ] && shift && FORCE_UPDATE=True |
| |
| mkdir -p $ONOS_ROOT/bin |
| pushd $ONOS_ROOT/bin > /dev/null |
| |
| if [ -n "$FORCE_UPDATE" ] || [ ! -f "buck" ] || [ "$REQUIRED_VERSION" != "$(cat .buck_version)" ]; then |
| echo "Downloading Buck..." |
| rm -f .buck_version buck |
| curl -o ./buck -L $BUCK_URL |
| if [ -n "$(which shasum)" ]; then |
| SHA=$(shasum ./buck | cut -d' ' -f1) |
| [ "$SHA" != "$BUCK_SHA" ] && |
| echo "ERROR: Downloaded SHA ($SHA) does not match expected SHA ($BUCK_SHA)" && |
| exit 1 |
| else |
| echo "SHA cannot be verified" |
| fi |
| chmod 555 ./buck |
| echo $(./buck --version 2>/dev/null) > .buck_version |
| chmod 444 .buck_version |
| rm -rf ./buck-out |
| printf "Successfully downloaded Buck to $ONOS_ROOT/bin/buck\n\n" |
| ONOS_BUILD_PLUGIN="true" |
| fi |
| popd > /dev/null |
| |
| BUCK=$ONOS_ROOT/bin/buck |
| PLUGINS=$ONOS_ROOT/bucklets/plugins |
| ONOS_PLUGIN=$PLUGINS/onosjar.jar |
| |
| if [ ! -f "$ONOS_PLUGIN" -o -n "$ONOS_BUILD_PLUGIN" ]; then |
| echo "Building ONOS Buck plugins..." |
| |
| # Build it first |
| pluginJar=$(NO_BUCKD=1 $BUCK build //tools/build/buck-plugin:onosjar --show-output 2>/dev/null | grep onosjar.jar | cut -d\ -f2) |
| |
| CHK_NEW=$(cksum $ONOS_ROOT/$pluginJar | cut -d' ' -f1-2) |
| CHK_OLD=$(cksum $ONOS_PLUGIN 2>/dev/null | cut -d' ' -f1-2) |
| if [ "$CHK_NEW" != "$CHK_OLD" ]; then |
| # diff plugins... if different, copy and restart buckd |
| # Then install it |
| mkdir -p $PLUGINS |
| cp $ONOS_ROOT/$pluginJar $PLUGINS |
| echo "Updated to the latest plugin." |
| $BUCK clean 2>/dev/null |
| else |
| echo "Plugin was already up to date." |
| fi |
| fi |
| |
| # Finally, run the Buck command... |
| $BUCK "$@" |