#!/bin/bash # get build data if [[ "$BUILD_COMMIT" == "" ]]; then BUILD_COMMIT=$(git describe --all --long --abbrev=99 --dirty 2>/dev/null) fi if [[ "$BUILD_USER" == "" ]]; then BUILD_USER=$(id -un) fi if [[ "$BUILD_HOST" == "" ]]; then BUILD_HOST=$(hostname -f) fi if [[ "$BUILD_DATE" == "" ]]; then BUILD_DATE=$(date +%d.%m.%Y) fi if [[ "$BUILD_SOURCE" == "" ]]; then BUILD_SOURCE=$(git remote -v | grep origin | cut -f2 | cut -d" " -f1 | head -n 1) fi if [[ "$BUILD_SOURCE" == "" ]]; then BUILD_SOURCE=$(git remote -v | cut -f2 | cut -d" " -f1 | head -n 1) fi BUILD_BUILDOPTIONS=$(echo $* | sed "s/ /ยง/g") # check if [[ "$BUILD_COMMIT" == "" ]]; then echo "could not automatically determine BUILD_COMMIT, please supply manually as environment variable." exit 1 fi if [[ "$BUILD_USER" == "" ]]; then echo "could not automatically determine BUILD_USER, please supply manually as environment variable." exit 1 fi if [[ "$BUILD_HOST" == "" ]]; then echo "could not automatically determine BUILD_HOST, please supply manually as environment variable." exit 1 fi if [[ "$BUILD_DATE" == "" ]]; then echo "could not automatically determine BUILD_DATE, please supply manually as environment variable." exit 1 fi if [[ "$BUILD_SOURCE" == "" ]]; then echo "could not automatically determine BUILD_SOURCE, please supply manually as environment variable." exit 1 fi # build tools EXTRA_LD_FLAGS="" if [[ $GOOS == "windows" ]]; then # checks if [[ $CC_FOR_windows_amd64 == "" ]]; then echo "ENV variable CC_FOR_windows_amd64 (c compiler) is not set. Please set it to the cross compiler you want to use for compiling for windows_amd64" exit 1 fi if [[ $CXX_FOR_windows_amd64 == "" ]]; then echo "ENV variable CXX_FOR_windows_amd64 (c++ compiler) is not set. Please set it to the cross compiler you want to use for compiling for windows_amd64" exit 1 fi # compilers export CC=$CC_FOR_windows_amd64 export CXX=$CXX_FOR_windows_amd64 # custom export CGO_ENABLED=1 EXTRA_LD_FLAGS='-H windowsgui' # Hide console window by default (but we attach to parent console if available) # generate resource.syso for windows metadata / icon go generate fi echo "Please notice, that this build script includes metadata into the build." echo "This information is useful for debugging and license compliance." echo "Run the compiled binary with the -version flag to see the information included." # build BUILD_PATH="github.com/safing/portbase/info" go build -ldflags "$EXTRA_LD_FLAGS -X ${BUILD_PATH}.commit=${BUILD_COMMIT} -X ${BUILD_PATH}.buildOptions=${BUILD_BUILDOPTIONS} -X ${BUILD_PATH}.buildUser=${BUILD_USER} -X ${BUILD_PATH}.buildHost=${BUILD_HOST} -X ${BUILD_PATH}.buildDate=${BUILD_DATE} -X ${BUILD_PATH}.buildSource=${BUILD_SOURCE}" $*