mirror of
https://github.com/opennetworkinglab/onos.git
synced 2026-01-07 17:41:41 +01:00
86 lines
2.7 KiB
Bash
Executable File
86 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# -----------------------------------------------------------------------------
|
|
# Builds dependencies and copies stratum_bmv2 binary to a remote node.
|
|
# -----------------------------------------------------------------------------
|
|
|
|
set -e
|
|
|
|
function _usage () {
|
|
cat << _EOF_
|
|
usage:
|
|
$(basename $0) [node]
|
|
|
|
options:
|
|
- [node] : remote node to install Stratum on.
|
|
|
|
summary:
|
|
Builds dependencies and copies stratum_bmv2 binary to a remote node.
|
|
|
|
If [node] is not specified the default target is \$OCN.
|
|
|
|
This script requires env STRATUM_BMV2_TAR to be set and to point to a tar file
|
|
containing the following files (pre-built stratum_bmv2 binaries):
|
|
- stratum/bazel-bin/stratum/hal/bin/bmv2/stratum_bmv2
|
|
- stratum/stratum/hal/bin/bmv2/dummy.json
|
|
|
|
_EOF_
|
|
}
|
|
|
|
[[ "$1" = "-h" ]] && _usage && exit 0
|
|
|
|
[[ ! -d "$ONOS_ROOT" ]] && echo "ONOS_ROOT is not defined" >&2 && exit 1
|
|
. ${ONOS_ROOT}/tools/build/envDefaults
|
|
|
|
[[ ! -f ${STRATUM_BMV2_TAR} ]] && echo "STRATUM_BMV2_TAR is not defined or points to an invalid file" && exit 1
|
|
|
|
md5cmd=''
|
|
md5cmdprm=''
|
|
case "$OSTYPE" in
|
|
darwin*) md5cmd='md5' ; md5cmdprm='-q' ;;
|
|
*) md5cmd='md5sum';;
|
|
esac
|
|
|
|
node=${1:-$OCN}
|
|
remote=${ONOS_USER}@${node}
|
|
|
|
stratumRoot="/home/${ONOS_USER}/stratum"
|
|
stratumExportLine="export STRATUM_ROOT=${stratumRoot}"
|
|
stratumMd5=$(${md5cmd} ${md5cmdprm} ${STRATUM_BMV2_TAR})
|
|
stratumInstalled="~/.stratum_bmv2_installed_${stratumMd5}"
|
|
|
|
p4ToolsScript=${ONOS_ROOT}/tools/dev/p4vm/install-p4-tools.sh
|
|
p4ToolsMd5=$(${md5cmd} ${md5cmdprm} ${p4ToolsScript})
|
|
p4ToolsInstalled="~/.stratum_deps_installed_${p4ToolsMd5}"
|
|
|
|
function do_deps {
|
|
if ssh ${remote} stat "${p4ToolsInstalled}" \> /dev/null 2\>\&1 ; then
|
|
echo "stratum deps already up-to-date on ${node}"
|
|
else
|
|
ssh ${remote} "sudo rm -f /tmp/install-p4-tools.sh"
|
|
scp -qr ${p4ToolsScript} ${ONOS_USER}@[${node}]:/tmp/install-p4-tools.sh
|
|
ssh -tt ${remote} "
|
|
USE_STRATUM=true DEBUG_FLAGS=false FAST_BUILD=true CLEAN_UP=true \
|
|
bash /tmp/install-p4-tools.sh bmv2 \
|
|
&& touch ${p4ToolsInstalled}
|
|
"
|
|
fi
|
|
}
|
|
|
|
function do_stratum_bin {
|
|
if ssh ${remote} stat "${stratumInstalled}" \> /dev/null 2\>\&1 ; then
|
|
echo "stratum_bmv2 already up-to-date on ${node}"
|
|
else
|
|
ssh ${remote} "sudo rm -f /tmp/stratum_bmv2.tar.gz"
|
|
scp -qr ${STRATUM_BMV2_TAR} ${ONOS_USER}@[${node}]:/tmp/stratum_bmv2.tar.gz
|
|
ssh -tt ${remote} "
|
|
rm -rf ${stratumRoot} && mkdir ${stratumRoot} && \
|
|
tar xvf /tmp/stratum_bmv2.tar.gz -C ${stratumRoot} --strip-components 1 \
|
|
&& touch ${stratumInstalled} \
|
|
&& grep -qF -- \"${stratumExportLine}\" ~/.bash_aliases || echo \"${stratumExportLine}\" >> ~/.bash_aliases
|
|
"
|
|
fi
|
|
}
|
|
|
|
do_deps
|
|
do_stratum_bin
|