tools/scripts/evtool-v20.7.2

265 lines
6.7 KiB
Bash
Executable File

#!/bin/bash
EVIO=https://github.com/EdgeVPNio/evio.git
EXLIBS=https://github.com/ipop-project/3rd-Party-Libs.git
PY=python3.8
WorkspaceRoot=~/workspace
EdgeVPNIO=EdgeVPNio
Build_WRTC=./$EdgeVPNIO/tools/scripts/build_webrtc.sh
Get_Archives=./$EdgeVPNIO/tools/scripts/get_archives.sh
Get_Include=./$EdgeVPNIO/tools/scripts/get_include.sh
Build_Tincan=./$EdgeVPNIO/tools/scripts/build_tincan.sh
function install_build_tools
{
sudo bash -c "
apt-get update -y && \
apt-get install -y git \
make clang libc++-dev libssl-dev $PY"
}
function pull_src
{
wd=$(pwd)
cd ..
#stat evio dir clone or pull
git clone $EVIO
cd evio/tincan/external
#
git clone -b ubuntu-x64 --single-branch https://github.com/ipop-project/3rd-Party-Libs.git
cd $wd
}
function make_debpak ()
{
python3 ./scripts/Versioning.py
wd=$(pwd)
rm -rf ~/workspace/out/docker-image/*.deb
cd ~/workspace
mkdir -p out
cd ~/workspace/$EdgeVPNIO/tools
cp -r ./debian-package ../../out
cp -r ../evio/controller/Controller.py ../../out/debian-package/edge-vpnio/opt/edge-vpnio/ && \
mkdir -p ../../out/debian-package/edge-vpnio/etc/opt/edge-vpnio/
cp -r ../evio/controller/template-config.json ../../out/debian-package/edge-vpnio/etc/opt/edge-vpnio/config.json && \
cp -r ../evio/controller/modules/ ../evio/controller/framework/ ../../out/debian-package/edge-vpnio/opt/edge-vpnio/ && \
chmod 0775 ../../out/debian-package/edge-vpnio/opt/edge-vpnio/framework/ && \
chmod 0664 ../../out/debian-package/edge-vpnio/opt/edge-vpnio/framework/* && \
chmod 0775 ../../out/debian-package/edge-vpnio/opt/edge-vpnio/modules/ && \
chmod 0664 ../../out/debian-package/edge-vpnio/opt/edge-vpnio/modules/* && \
chmod 0664 ../../out/debian-package/edge-vpnio/opt/edge-vpnio/Controller.py && \
chmod 0664 ../../out/debian-package/edge-vpnio/etc/opt/edge-vpnio/config.json && \
cp -r ../evio/tincan/out/"$2"/"$1"/tincan ../../out/debian-package/edge-vpnio/opt/edge-vpnio/ && \
chmod 0775 ../../out/debian-package/edge-vpnio/opt/edge-vpnio/tincan && \
cd ../../out/debian-package/ && \
./deb-gen && \
rm -rf edge-vpnio/opt/edge-vpnio/framework \
edge-vpnio/opt/edge-vpnio/modules \
edge-vpnio/opt/edge-vpnio/tincan \
edge-vpnio/opt/edge-vpnio/template-config.json \
edge-vpnio/opt/edge-vpnio/Controller.py \
edge-vpnio/etc/opt/edge-vpnio/config.json
cd $wd
}
function install_testbed_deps
{
sudo bash -c "
apt-get update -y && \
apt-get install -y openvswitch-switch \
$PY $PY-venv $PY-dev python3-pip \
apt-transport-https \
ca-certificates \
curl git \
software-properties-common && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable\" && \
apt-cache policy docker-ce && \
apt-get install -y containerd.io \
docker-ce-cli \
docker-ce && \
groupadd -f docker && \
usermod -a -G docker $USER \
"
echo "You must logout and relogin for docker group membership to take effect."
}
function make_venv
{
wd=$(pwd)
cd ../testbed && \
$PY -m venv venv && \
source venv/bin/activate && \
pip3 install simplejson
cd $wd
}
function make_dkrimg
{
python3 ./scripts/Versioning.py
cd ~/workspace/$EdgeVPNIO/tools
cp -r docker-image ../../out/
mv ../../out/debian-package/*.deb ~/workspace/out/docker-image && \
wd=$(pwd)
cd ../../out/docker-image/
NAME=`ls | grep *.deb`
version=$(echo "$NAME" | cut -d_ -f2)
cd $wd
docker build -f ./docker-image/evio-base.Dockerfile -t edgevpnio/evio-base:1.0 ../../out/docker-image && \
docker build -f ./docker-image/evio-node.Dockerfile -t edgevpnio/evio-node:"$version" ../../out/docker-image
}
function install_openfire
{
docker run --name openfire -d \
-p 9090:9090 -p 5222:5222 \
-p 5269:5269 -p 5223:5223 \
-p 7443:7443 -p 7777:7777 \
-p 7070:7070 -p 5229:5229 \
-p 5275:5275 \
edgevpnio/openfire_edgevpn_demo
}
function install_portal
{
#Todo: visualizer not yet available
git clone https://github.com/edgevpnio/portal.git
cd portal/setup
./setup.sh
chown -R $USER /users/$USER/
}
function do_clean
{
# tincan
wd=$(pwd)
cd ~/workspace/$EdgeVPNIO/evio/tincan/trunk/build
make clean;
cd ~/workspace/out/
#debian pak
cd ./debian-package/ && \
rm -ri ./*.deb \
edge-vpnio/opt/edge-vpnio/framework \
edge-vpnio/opt/edge-vpnio/modules \
edge-vpnio/opt/edge-vpnio/tincan \
edge-vpnio/opt/edge-vpnio/template-config.json \
edge-vpnio/opt/edge-vpnio/Controller.py
# docker-image
cd ..
rm -f docker-image/*.deb
docker rmi edgevpnio/evio-base:1.0 edgevpnio/evio-node:20.7
docker rmi $(docker images -q --filter "dangling=true")
# testbed
cd ~/workspace/$EdgeVPNIO/tools/testbed
rm -rf config log cert venv
cd $wd
}
function build_webrtc()
{
wd=$(pwd)
cd $WorkspaceRoot
chmod +x $Build_WRTC $Get_Archives $Get_Include
$Build_WRTC -b "$1" -t "$2"
if [ $? -eq '0' ]; then
cd $WorkspaceRoot
$Get_Archives -b "$1" -t "$2"
if [ $? -eq '0' ]; then
cd $WorkspaceRoot
$Get_Include
fi
fi
cd $wd
}
function build_tincan() {
python3 ./scripts/Versioning.py
wd=$(pwd)
cd $WorkspaceRoot
chmod +x $Build_Tincan
$Build_Tincan -b "$1" -t "$2"
cd $wd
}
function do_full_setup
{
install_build_tools
pull_src
build_webrtc
build_tincan
make_debpak
make_dkrimg
make_testbed_prereqs
make_venv
}
case $1 in
deps)
install_build_tools
;;
src)
pull_src
;;
debpak)
make_debpak debug debian-x64
;;
debpak_release)
make_debpak release debian-x64
;;
debpak_arm_debug)
make_debpak debug debian-arm
;;
debpak_arm_release)
make_debpak release debian-arm
;;
dkrimg)
make_dkrimg
;;
testbed)
install_testbed_deps
;;
venv)
make_venv
;;
xmpp)
install_openfire
;;
clean)
do_clean
;;
build_webrtc)
build_webrtc debug ubuntu
;;
build_webrtc_with_release_ubuntu)
build_webrtc release ubuntu
;;
build_webrtc_with_debug_raspberry_pi)
build_webrtc debug raspberry-pi
;;
build_webrtc_with_release_raspberry_pi)
build_webrtc release raspberry-pi
;;
build_tincan)
build_tincan debug ubuntu
;;
build_tincan_release_ubuntu)
build_tincan release ubuntu
;;
build_tincan_debug_raspberry)
build_tincan debug raspberry-pi
;;
build_tincan_release_raspberry)
build_tincan release raspberry-pi
;;
all)
do_full_setup
;;
*)
echo "no match on input -> $1"
;;
esac