105 lines
2.1 KiB
Bash
Executable file
105 lines
2.1 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# exit on error
|
|
set -e
|
|
|
|
function install_python_depencencies() {
|
|
sudo python3 -m pip install -r daemon/requirements.txt
|
|
}
|
|
|
|
function install_python_dev_dependencies() {
|
|
sudo python3 -m pip install pipenv grpcio-tools
|
|
}
|
|
|
|
function install_ospf_mdr() {
|
|
rm -rf /tmp/ospf-mdr
|
|
git clone https://github.com/USNavalResearchLaboratory/ospf-mdr /tmp/ospf-mdr
|
|
cd /tmp/ospf-mdr
|
|
./bootstrap.sh
|
|
./configure --disable-doc --enable-user=root --enable-group=root --with-cflags=-ggdb \
|
|
--sysconfdir=/usr/local/etc/quagga --enable-vtysh \
|
|
--localstatedir=/var/run/quagga
|
|
make -j8
|
|
sudo make install
|
|
cd -
|
|
}
|
|
|
|
function build_core() {
|
|
./bootstrap.sh
|
|
./configure $1
|
|
make -j8
|
|
}
|
|
|
|
function install_core() {
|
|
sudo make install
|
|
}
|
|
|
|
function install_dev_core() {
|
|
cd gui
|
|
sudo make install
|
|
cd -
|
|
cd netns
|
|
sudo make install
|
|
cd -
|
|
cd daemon
|
|
pipenv install --dev
|
|
cd -
|
|
}
|
|
|
|
# detect os/ver for install type
|
|
os=""
|
|
if [[ -f /etc/os-release ]]; then
|
|
. /etc/os-release
|
|
os=${ID}
|
|
fi
|
|
|
|
# parse arguments
|
|
while getopts ":d" opt; do
|
|
case ${opt} in
|
|
d)
|
|
dev=1
|
|
;;
|
|
\?)
|
|
echo "Invalid Option: $OPTARG" 1>&2
|
|
;;
|
|
esac
|
|
done
|
|
shift $((OPTIND - 1))
|
|
|
|
# check install was found
|
|
case ${os} in
|
|
"ubuntu")
|
|
echo "Installing CORE for Ubuntu"
|
|
sudo apt install -y automake pkg-config gcc libev-dev ebtables gawk iproute2 \
|
|
python3.6 python3.6-dev python3-pip python3-tk tk libtk-img ethtool libtool libreadline-dev autoconf
|
|
install_ospf_mdr
|
|
if [[ -z ${dev} ]]; then
|
|
echo "normal install"
|
|
install_python_depencencies
|
|
build_core
|
|
install_core
|
|
else
|
|
echo "dev install"
|
|
install_python_dev_dependencies
|
|
build_core
|
|
install_dev_core
|
|
fi
|
|
;;
|
|
"centos")
|
|
sudo yum install -y automake pkgconf-pkg-config gcc gcc-c++ libev-devel iptables-ebtables iproute \
|
|
python36 python36-devel python3-pip python3-tkinter tk ethtool libtool readline-devel autoconf gawk
|
|
install_ospf_mdr
|
|
if [[ -z ${dev} ]]; then
|
|
install_python_depencencies
|
|
build_core --prefix=/usr
|
|
install_core
|
|
else
|
|
install_python_dev_dependencies
|
|
build_core --prefix=/usr
|
|
install_dev_core
|
|
fi
|
|
;;
|
|
*)
|
|
echo "unknown OS ID ${os} cannot install"
|
|
;;
|
|
esac
|