freedv-gui/docker/freedv_build_windows.sh

106 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
FDV_CURRENT_BRANCH=`git rev-parse --abbrev-ref HEAD 2>/dev/null`
FDV_CURRENT_BRANCH=${FDV_CURRENT_BRANCH:=master}
FDV_CURRENT_REPO=`git remote get-url origin 2>/dev/null`
FDV_CURRENT_REPO=${FDV_CURRENT_REPO:=https://github.com/drowe67/freedv-gui.git}
function print_help {
echo
echo "Build freedv-gui for Windows using Docker"
echo
echo " usage ./freedv_build_windows.sh [-d] [--noclean] [--build] [--repo GitRepo] [--branch GitBranch] 32|64"
echo
echo " -d debug mode; trace script execution"
echo " --noclean start from a previous build (git pull && make), which is faster for small changes."
echo " The default is a clean build from a fresh git clone (slow but safer)"
echo " --build Update docker image first (run if you have modified the docker scripts in fdv_win_fedora)"
echo " --rebuild Completely recreate docker image first (e.g. run if you have new rpm packages)"
echo " --repo GitRepo (default $FDV_CURRENT_REPO)"
echo " --branch GitBranch (default $FDV_CURRENT_BRANCH)"
echo " --bootstrap-wx Builds wxWidgets from source (may take significantly longer to complete)"
echo
exit
}
# defaults - these variables are passed to the docker container
FDV_CLEAN=1
FDV_BUILD=0
FDV_REBUILD=0
FDV_GIT_REPO=$FDV_CURRENT_REPO
FDV_GIT_BRANCH=$FDV_CURRENT_BRANCH
FDV_BOOTSTRAP_WX=0
POSITIONAL=()
while [[ $# -gt 0 ]]; do
key="$1"
case $key in
-d)
set -x
shift
;;
--noclean)
FDV_CLEAN=0
shift
;;
--build)
FDV_BUILD=1
shift
;;
--rebuild)
FDV_REBUILD=1
shift
;;
--repo)
FDV_GIT_REPO="$2"
shift
shift
;;
--branch)
FDV_GIT_BRANCH="$2"
shift
shift
;;
--bootstrap-wx)
FDV_BOOTSTRAP_WX=1
shift
;;
-h|--help)
print_help
;;
*)
POSITIONAL+=("$1") # save it in an array for later
shift
;;
esac
done
set -- "${POSITIONAL[@]}" # restore positional parameters
FDV_CMAKE=mingw64-cmake
if [ $# -eq 1 ]; then
if [ $1 -eq 32 ]; then
FDV_CMAKE=mingw32-cmake
fi
else
print_help
fi
# create log file
log=build_log.txt
echo > $log
if [ $FDV_BUILD -eq 1 ]; then
docker-compose -f docker-compose-win.yml build >> $log
fi
if [ $FDV_REBUILD -eq 1 ]; then
docker-compose -f docker-compose-win.yml rm -f >> $log
docker-compose -f docker-compose-win.yml build --no-cache >> $log
fi
FDV_CLEAN=$FDV_CLEAN FDV_BOOTSTRAP_WX=$FDV_BOOTSTRAP_WX FDV_CMAKE=$FDV_CMAKE FDV_GIT_REPO=$FDV_GIT_REPO FDV_GIT_BRANCH=$FDV_GIT_BRANCH \
docker-compose -f docker-compose-win.yml up --remove-orphans >> $log
package_docker_path=$(cat $log | sed -n "s/.*package: \(.*exe\) .*/\1/p")
echo $package_docker_path
docker cp fdv_win_fed37_c:$package_docker_path .