From 72ce14b1f33bd4dc01ca754339d7a5c1a9197859 Mon Sep 17 00:00:00 2001 From: Ken Date: Fri, 19 Jan 2024 00:58:07 +0000 Subject: [PATCH] Build scripts for v24.1.0.1036 --- scripts/evio-tools-v24.sh | 312 ++++++++++++++++++++++++++++++++++++++ versioning/config.py | 13 +- 2 files changed, 318 insertions(+), 7 deletions(-) create mode 100755 scripts/evio-tools-v24.sh diff --git a/scripts/evio-tools-v24.sh b/scripts/evio-tools-v24.sh new file mode 100755 index 0000000..51a0cca --- /dev/null +++ b/scripts/evio-tools-v24.sh @@ -0,0 +1,312 @@ +#!/bin/bash +#v24 + +set -e + +EVIO_REPO=https://github.com/EdgeVPNio/evio.git +EXT_REPO=https://github.com/EdgeVPNio/external.git +TOOLS_REPO=https://github.com/EdgeVPNio/tools.git +PORTAL_REPO=https://github.com/EdgeVPNio/portal.git +PY=python3.9 +WorkspaceRoot=$(readlink -e ../..) + +EVIO_DIR=$WorkspaceRoot/EdgeVPNio/evio/evio +TINCAN_DIR=$WorkspaceRoot/EdgeVPNio/tincan +EXT_DIR=$WorkspaceRoot/EdgeVPNio/external +TOOLS_DIR=$WorkspaceRoot/EdgeVPNio/tools +PORTAL_DIR=$WorkspaceRoot/EdgeVPNio/portal +OUT_DIR=$WorkspaceRoot/out +BuildWRTC=$TOOLS_DIR/scripts/build_webrtc.sh +GetArchives=$TOOLS_DIR/scripts/get_archives.sh +GetInclude=$TOOLS_DIR/scripts/get_include.sh +BuildTincan=$TOOLS_DIR/scripts/build_tincan.sh +Versioning=$TOOLS_DIR/versioning/versioning.py +VER=0 +PLATFORM="" +BUILD_TYPE="" +ARCH="" +DATE="$(date '+%Y-%m-%d %T%z')" + +function display_env +{ + echo DATE=$DATE + echo VER=$VER + echo PLATFORM=$PLATFORM + echo BUILD_TYPE=$BUILD_TYPE + echo ARCH=$ARCH + echo WorkspaceRoot=$WorkspaceRoot + echo OUT_DIR=$OUT_DIR + echo EVIO_DIR=$EVIO_DIR + echo EXT_DIR=$EXT_DIR + echo TOOLS_DIR=$TOOLS_DIR +} + +function check_env +{ + + envlist="VER PLATFORM BUILD_TYPE ARCH" + + for env in $envlist + do + echo ${!env} + if [ -z ${!env} ]; then + echo "Environment ${env} is not set, exiting." + exit 1 + + fi + done +} + +function update_repo +{ + rv=$(git -C $1 rev-parse --is-inside-work-tree) + if [ "$rv" == "true" -o "$rv" == "false" ]; then + git -C "$(dirname $1)" pull "$2" + else + git -C "$(dirname $1)" clone "$2" + fi +} + +function sync_repos +{ + update_repo $EVIO_DIR $EVIO_REPO + update_repo $EXT_DIR $EXT_REPO + update_repo $TOOLS_DIR $TOOLS_REPO + update_repo $PORTAL_DIR $PORTAL_REPO + +} + +function copy_evio_files +{ + echo target dir= "$1" + cp -r $EVIO_DIR/evio_controller.py "$1"/ && \ + cp $EVIO_DIR/template-config.json "$1"/config.json && \ + cp -r $EVIO_DIR/broker/ $EVIO_DIR/controllers/ "$1"/ && \ + chmod 0775 "$1"/broker/ && \ + chmod 0664 "$1"/broker/* && \ + chmod 0775 "$1"/controllers/ && \ + chmod 0664 "$1"/controllers/* && \ + chmod 0664 "$1"/evio_controller.py && \ + chmod 0664 "$1"/config.json && \ + cp $TINCAN_DIR/out/"$PLATFORM"/"$BUILD_TYPE"/tincan "$1"/ && \ + chmod 0775 "$1"/tincan +} + +function make_debpak +{ + display_env + check_env + + sudo rm -rf $EVIO_DIR/controllers/__pycache__/ $EVIO_DIR/broker/__pycache__/ + wd=$(pwd) + mkdir -p $TOOLS_DIR/debian-package/evio/etc/opt/evio + # copy evio and tincan files to debpak directory + cp -r $EVIO_DIR/evio_controller.py $TOOLS_DIR/debian-package/evio/opt/evio/ && \ + cp $EVIO_DIR/template-config.json $TOOLS_DIR/debian-package/evio/etc/opt/evio/config.json && \ + cp -r $EVIO_DIR/controllers/ $EVIO_DIR/broker/ $TOOLS_DIR/debian-package/evio/opt/evio/ && \ + chmod 0775 $TOOLS_DIR/debian-package/evio/opt/evio/broker/ && \ + chmod 0664 $TOOLS_DIR/debian-package/evio/opt/evio/broker/* && \ + chmod 0775 $TOOLS_DIR/debian-package/evio/opt/evio/controllers/ && \ + chmod 0664 $TOOLS_DIR/debian-package/evio/opt/evio/controllers/* && \ + chmod 0664 $TOOLS_DIR/debian-package/evio/opt/evio/evio_controller.py && \ + chmod 0664 $TOOLS_DIR/debian-package/evio/etc/opt/evio/config.json && \ + cp $TINCAN_DIR/out/"$PLATFORM"/"$BUILD_TYPE"/tincan $TOOLS_DIR/debian-package/evio/opt/evio/ && \ + chmod 0775 $TOOLS_DIR/debian-package/evio/opt/evio/tincan + if [ $? -ne 0 ]; then + exit 1 + fi + mkdir -p $OUT_DIR + # invoke deb-gen to create debian installer package + cd $TOOLS_DIR/debian-package/ && \ + ./deb-gen $OUT_DIR $ARCH $VER $1 + if [ $? -ne 0 ]; then + exit 1 + fi + # remove previously copied files + sudo rm -rf evio/opt/evio/broker \ + evio/opt/evio/controllers \ + evio/opt/evio/tincan \ + evio/opt/evio/template-config.json \ + evio/opt/evio/evio_controller.py \ + evio/etc/opt/evio/config.json + cd $wd +} + +function make_dkrimg +{ + display_env + check_env + DPK_NAME=evio_$VER"_"$ARCH.deb + echo Building evio node docker image using $DPK_NAME + cp $OUT_DIR/$DPK_NAME $TOOLS_DIR/docker-image/evio"_"$ARCH.deb && \ + docker build --build-arg TARGETARCH="$ARCH" -f $TOOLS_DIR/docker-image/evio-node.Dockerfile -t edgevpnio/evio-node:"$VER" $TOOLS_DIR/docker-image + rm $TOOLS_DIR/docker-image/evio"_"$ARCH.deb +} + +function buildx_dkrimg +{ + img_name=$1 + display_env + DPK_NAME_AMD=evio_$VER"_"amd64.deb + DPK_NAME_ARM=evio_$VER"_"arm64.deb + cp $OUT_DIR/$DPK_NAME_AMD $TOOLS_DIR/docker-image/evio"_"amd64.deb && \ + cp $OUT_DIR/$DPK_NAME_ARM $TOOLS_DIR/docker-image/evio"_"arm64.deb && \ + docker buildx use evibuilder && \ + docker buildx build --push \ + --build-arg VERSION="$VER" \ + --build-arg DATE="$DATE" \ + --platform linux/amd64,linux/arm64 \ + -f $TOOLS_DIR/docker-image/evio-node.Dockerfile \ + -t edgevpnio/$img_name:$VER \ + -t edgevpnio/$img_name:latest \ + $TOOLS_DIR/docker-image + rm $TOOLS_DIR/docker-image/evio"_"amd64.deb $TOOLS_DIR/docker-image/evio"_"arm64.deb +} + +function build_webrtc() +{ + display_env + check_env + wd=$(pwd) + cd $WorkspaceRoot + chmod +x $BuildWRTC $GetArchives $GetInclude + $BuildWRTC -t $PLATFORM -b $BUILD_TYPE + if [ $? -eq 0 ]; then + cd $WorkspaceRoot + $GetArchives -t $PLATFORM -b $BUILD_TYPE + if [ $? -eq 0 ]; then + cd $WorkspaceRoot + $GetInclude + fi + fi + cd $wd +} + +function build_tincan { + display_env +# check_env + cd $WorkspaceRoot + chmod +x $BuildTincan +# git -C "$EXT_DIR" checkout $PLATFORM +# $BuildTincan -t $PLATFORM -b $BUILD_TYPE + $BuildTincan -t $PLATFORM -b $BUILD_TYPE + if [ $? -ne 0 ]; then + exit 1 + fi +} + +function do_build +{ + build_tincan && \ + make_debpak && \ + make_dkrimg +} + +function do_build_debian_x64_release +{ + $PY $Versioning --workspace_root=$WorkspaceRoot --gen_version_files + VER=$($PY $Versioning --version) + PLATFORM="debian-x64" + BUILD_TYPE="release" + ARCH="amd64" + do_build +} + +function do_build_debian_arm64_release +{ + $PY $Versioning --workspace_root=$WorkspaceRoot --gen_version_files + VER=$($PY $Versioning --version) + PLATFORM="debian-arm64" + BUILD_TYPE="release" + ARCH="arm64" + do_build +} + +function do_build_debian_arm_release +{ + $PY $Versioning --workspace_root=$WorkspaceRoot --gen_version_files + VER=$($PY $Versioning --version) + PLATFORM="debian-arm" + BUILD_TYPE="release" + ARCH="armhf" + do_build +} + +source venv/bin/activate +case $1 in + sync) + sync_repos + ;; + bldnum) + if [ -z "$2" ]; then + cat /var/tmp/evio_build_number + echo "" + elif [ "$2" == "set" ]; then + if [ ! -z "$3" ]; then + echo $3 > /var/tmp/evio_build_number + else + echo "No value for build number specified" + fi + elif [ "$2" == "next" ]; then + $PY $Versioning --next_build_num + $PY $Versioning --workspace_root=$WorkspaceRoot --gen_version_files -verbose + fi + ;; + build) + VER=$($PY $Versioning --version) + $PY $Versioning --workspace_root=$WorkspaceRoot --gen_version_files -verbose + if [ "$3" == "amd64" ]; then + PLATFORM="debian-x64" + ARCH="amd64" + elif [ "$3" == "arm64" ]; then + PLATFORM="debian-arm64" + ARCH="arm64" + elif [ "$3" == "arm" ]; then + PLATFORM="debian-arm" + ARCH="armhf" + fi + if [ "$4" == "rel" ]; then + BUILD_TYPE="release" + elif [ "$4" == "dbg" ]; then + BUILD_TYPE="debug" + fi + if [ "$2" == "debpak" ]; then + make_debpak $5 + elif [ "$2" == "dkrimg" ]; then + make_dkrimg + elif [ "$2" == "webrtc" ]; then + build_webrtc + elif [ "$2" == "tincan" ]; then + build_tincan + fi + ;; + buildx) + $PY $Versioning --next_build_num + $PY $Versioning --workspace_root=$WorkspaceRoot --gen_version_files + VER=$($PY $Versioning --version) + BUILD_TYPE="release" + PLATFORM="debian-x64" + ARCH="amd64" + build_tincan + make_debpak nodeps + PLATFORM="debian-arm64" + ARCH="arm64" + build_tincan + make_debpak nodeps + buildx_dkrimg $2 + ;; + fbr) + $PY $Versioning --next_build_num + $PY $Versioning --workspace_root=$WorkspaceRoot --gen_version_files -verbose + VER=$($PY $Versioning --version) + PLATFORM="debian-x64" + ARCH="amd64" + BUILD_TYPE="release" + build_tincan + make_debpak nodeps + sudo apt install -y "$OUT_DIR"/evio_"$VER"_"$ARCH".deb + ;; + *) + echo "no match on input -> $1" + ;; +esac diff --git a/versioning/config.py b/versioning/config.py index 43f2f59..20781d1 100644 --- a/versioning/config.py +++ b/versioning/config.py @@ -28,15 +28,14 @@ # CONTROL_VER = 6 # OFFICIAL = True - -MAJOR_VER = 23 -MINOR_VER = 3 -REVISION_VER = 3 -CONTROL_VER = 6 -OFFICIAL = False - # MAJOR_VER = 23 # MINOR_VER = 3 # REVISION_VER = 4 # CONTROL_VER = 6 # OFFICIAL = True + +MAJOR_VER = 24 +MINOR_VER = 1 +REVISION_VER = 0 +CONTROL_VER = 7 +OFFICIAL = True