mirror of
https://github.com/fluencelabs/tendermint
synced 2025-06-25 02:31:46 +00:00
deterministic tooling for releases
get rid of gox build target builds inside docker, dev-build - locally Revert "build target builds inside docker, dev-build - locally" This reverts commit 8ba89d5e8c5668e3839ff49952a9166d1158f6e8. add build tags to make build/build_race/install use tendermint's fork of glide instead of tar.gz remove TMHOME unused var + set length for git hash get rid of GOTOOLS_CHECK fixes after review zip needed for distribution
This commit is contained in:
@ -1,6 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
# WARN: non hermetic build (people must run this script inside docker to
|
||||
# produce deterministic binaries).
|
||||
|
||||
# Get the version from the environment, or try to figure it out.
|
||||
if [ -z $VERSION ]; then
|
||||
VERSION=$(awk -F\" '/Version =/ { print $2; exit }' < version/version.go)
|
||||
@ -11,22 +14,51 @@ if [ -z "$VERSION" ]; then
|
||||
fi
|
||||
echo "==> Building version $VERSION..."
|
||||
|
||||
# Get the parent directory of where this script is.
|
||||
SOURCE="${BASH_SOURCE[0]}"
|
||||
while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
|
||||
DIR="$( cd -P "$( dirname "$SOURCE" )/.." && pwd )"
|
||||
|
||||
# Change into that dir because we expect that.
|
||||
cd "$DIR"
|
||||
|
||||
# Delete the old dir
|
||||
echo "==> Removing old directory..."
|
||||
rm -rf build/pkg
|
||||
mkdir -p build/pkg
|
||||
|
||||
# Do a hermetic build inside a Docker container.
|
||||
docker build -t tendermint/tendermint-builder scripts/tendermint-builder/
|
||||
docker run --rm -e "BUILD_TAGS=$BUILD_TAGS" -v "$(pwd)":/go/src/github.com/tendermint/tendermint tendermint/tendermint-builder ./scripts/dist_build.sh
|
||||
# Get the git commit
|
||||
GIT_COMMIT="$(git rev-parse --short=8 HEAD)"
|
||||
GIT_IMPORT="github.com/tendermint/tendermint/version"
|
||||
|
||||
# Determine the arch/os combos we're building for
|
||||
XC_ARCH=${XC_ARCH:-"386 amd64 arm"}
|
||||
XC_OS=${XC_OS:-"solaris darwin freebsd linux windows"}
|
||||
XC_EXCLUDE=${XC_EXCLUDE:-" darwin/arm solaris/amd64 solaris/386 solaris/arm freebsd/amd64 windows/arm "}
|
||||
|
||||
# Make sure build tools are available.
|
||||
make get_tools
|
||||
|
||||
# Get VENDORED dependencies
|
||||
make get_vendor_deps
|
||||
|
||||
# Build!
|
||||
# ldflags: -s Omit the symbol table and debug information.
|
||||
# -w Omit the DWARF symbol table.
|
||||
echo "==> Building..."
|
||||
IFS=' ' read -ra arch_list <<< "$XC_ARCH"
|
||||
IFS=' ' read -ra os_list <<< "$XC_OS"
|
||||
for arch in "${arch_list[@]}"; do
|
||||
for os in "${os_list[@]}"; do
|
||||
if [[ "$XC_EXCLUDE" != *" $os/$arch "* ]]; then
|
||||
echo "--> $os/$arch"
|
||||
GOOS=${os} GOARCH=${arch} go build -ldflags "-s -w -X ${GIT_IMPORT}.GitCommit=${GIT_COMMIT}" -tags="${BUILD_TAGS}" -o "build/pkg/${os}_${arch}/tendermint" ./cmd/tendermint
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
# Zip all the files.
|
||||
echo "==> Packaging..."
|
||||
for PLATFORM in $(find ./build/pkg -mindepth 1 -maxdepth 1 -type d); do
|
||||
OSARCH=$(basename "${PLATFORM}")
|
||||
echo "--> ${OSARCH}"
|
||||
|
||||
pushd "$PLATFORM" >/dev/null 2>&1
|
||||
zip "../${OSARCH}.zip" ./*
|
||||
popd >/dev/null 2>&1
|
||||
done
|
||||
|
||||
# Add "tendermint" and $VERSION prefix to package name.
|
||||
rm -rf ./build/dist
|
||||
|
Reference in New Issue
Block a user