|
|
- #!/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\" 'TMCoreSemVer =/ { print $2; exit }' < version/version.go)
- fi
- if [ -z "$VERSION" ]; then
- echo "Please specify a version."
- exit 1
- fi
- echo "==> Building version $VERSION..."
-
- # Delete the old dir
- echo "==> Removing old directory..."
- rm -rf build/pkg
- mkdir -p build/pkg
-
- # 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
- mkdir -p ./build/dist
- for FILENAME in $(find ./build/pkg -mindepth 1 -maxdepth 1 -type f); do
- FILENAME=$(basename "$FILENAME")
- cp "./build/pkg/${FILENAME}" "./build/dist/tendermint_${VERSION}_${FILENAME}"
- done
-
- # Make the checksums.
- pushd ./build/dist
- shasum -a256 ./* > "./tendermint_${VERSION}_SHA256SUMS"
- popd
-
- # Done
- echo
- echo "==> Results:"
- ls -hl ./build/dist
-
- exit 0
|