#!/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