blob: 6c39e6144f5c97205d5bd90c6ffdc6211bae7c4f [file] [log] [blame]
#!/bin/bash
# -----------------------------------------------------------------------------
# Runs the custom version of Buck required by ONOS.
# -----------------------------------------------------------------------------
set -e
BUCK_URL="https://github.com/bocon13/buck/releases/download/v2016.07.29.01-wip/buck"
BUCK_SHA="31b2925f0c7935cd581b11a52f4e7fc53ade125e"
REQUIRED_VERSION="buck version b1271d04f2c319784f8af9abc92ed2d01d10ed3a"
[ "-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"
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 $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 "$@"