2021-02-24 00:26:48 +00:00
#!/bin/bash
2019-02-10 12:16:29 +00:00
2021-02-03 22:41:43 +00:00
# "stashapp/compiler:develop" "stashapp/compiler:4"
COMPILER_CONTAINER = "stashapp/compiler:4"
2020-06-29 04:44:21 +00:00
BUILD_DATE = ` go run -mod= vendor scripts/getDate.go`
2019-10-23 10:52:06 +00:00
GITHASH = ` git rev-parse --short HEAD`
2020-02-06 19:39:08 +00:00
STASH_VERSION = ` git describe --tags --exclude latest_develop`
2021-02-03 22:41:43 +00:00
2020-06-29 04:44:21 +00:00
SETENV = " BUILD_DATE=\" $BUILD_DATE \" GITHASH= $GITHASH STASH_VERSION=\" $STASH_VERSION \" "
2020-08-19 23:27:54 +00:00
SETUP = "export GO111MODULE=on; export CGO_ENABLED=1; set -e; echo '=== Running packr ==='; make packr;"
2021-02-03 22:41:43 +00:00
SETUP_FAST = "export GO111MODULE=on; export CGO_ENABLED=1;"
2020-06-29 04:44:21 +00:00
WINDOWS = " echo '=== Building Windows binary ==='; $SETENV GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ LDFLAGS=\"-extldflags '-static' \" OUTPUT=\"dist/stash-win.exe\" make build-release; "
DARWIN = " echo '=== Building OSX binary ==='; $SETENV GOOS=darwin GOARCH=amd64 CC=o64-clang CXX=o64-clang++ OUTPUT=\"dist/stash-osx\" make build-release; "
2020-09-14 01:12:36 +00:00
LINUX_AMD64 = " echo '=== Building Linux (amd64) binary ==='; $SETENV GOOS=linux GOARCH=amd64 OUTPUT=\"dist/stash-linux\" make build-release-static; "
LINUX_ARM64v8 = " echo '=== Building Linux (armv8/arm64) binary ==='; $SETENV GOOS=linux GOARCH=arm64 CC=aarch64-linux-gnu-gcc OUTPUT=\"dist/stash-linux-arm64v8\" make build-release-static; "
LINUX_ARM32v7 = " echo '=== Building Linux (armv7/armhf) binary ==='; $SETENV GOOS=linux GOARCH=arm GOARM=7 CC=arm-linux-gnueabihf-gcc OUTPUT=\"dist/stash-linux-arm32v7\" make build-release-static; "
LINUX_ARM32v6 = " echo '=== Building Linux (armv6 | Raspberry Pi 1) binary ==='; $SETENV GOOS=linux GOARCH=arm GOARM=6 CC=arm-linux-gnueabi-gcc OUTPUT=\"dist/stash-pi\" make build-release-static; "
2021-02-03 22:41:43 +00:00
BUILD_COMPLETE = "echo '=== Build complete ==='"
# if build target ends with -fast then use prebuilt packr2. eg amd64-fast or all-fast
FAST = ` echo " $1 " | cut -d - -f 2`
if [ " $FAST " = = "fast" ]
then
echo "Building without Packr2"
SETUP = $SETUP_FAST
fi
BUILD = ` echo " $1 " | cut -d - -f 1`
if [ " $BUILD " = = "windows" ]
then
echo "Building Windows"
COMMAND = " $SETUP $WINDOWS $BUILD_COMPLETE "
elif [ " $BUILD " = = "darwin" ]
then
echo "Building Darwin(MacOSX)"
COMMAND = " $SETUP $DARWIN $BUILD_COMPLETE "
elif [ " $BUILD " = = "amd64" ]
then
echo "Building Linux AMD64"
COMMAND = " $SETUP $LINUX_AMD64 $BUILD_COMPLETE "
elif [ " $BUILD " = = "arm64v8" ]
then
echo "Building Linux ARM64v8"
COMMAND = " $SETUP $LINUX_ARM64v8 $BUILD_COMPLETE "
elif [ " $BUILD " = = "arm32v6" ]
then
echo "Building Linux ARM32v6"
COMMAND = " $SETUP $LINUX_ARM32v6 $BUILD_COMPLETE "
elif [ " $BUILD " = = "arm32v7" ]
then
echo "Building Linux ARM32v7"
COMMAND = " $SETUP $LINUX_ARM32v7 $BUILD_COMPLETE "
else
echo "Building All"
COMMAND = " $SETUP $WINDOWS $DARWIN $LINUX_AMD64 $LINUX_ARM64v8 $LINUX_ARM32v7 $LINUX_ARM32v6 $BUILD_COMPLETE "
fi
# Pull Latest Image
docker pull $COMPILER_CONTAINER
2019-02-10 12:16:29 +00:00
2021-02-03 22:41:43 +00:00
# Changed consistency to delegated since this is being used as a build tool. The binded volume shouldn't be changing during its run.
docker run --rm --mount type = bind,source= " $( pwd ) " ,target= /stash,consistency= delegated -w /stash $COMPILER_CONTAINER /bin/bash -c " $COMMAND "
2019-02-10 12:16:29 +00:00