This repository has been archived by the owner on Sep 9, 2020. It is now read-only.
/
build-all.bash
executable file
·65 lines (56 loc) · 2.36 KB
/
build-all.bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/usr/bin/env bash
# Copyright 2017 The Go Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.
#
# This script will build dep and calculate hash for each
# (DEP_BUILD_PLATFORMS, DEP_BUILD_ARCHS) pair.
# DEP_BUILD_PLATFORMS="linux" DEP_BUILD_ARCHS="amd64" ./hack/build-all.bash
# can be called to build only for linux-amd64
set -e
DEP_ROOT=$(git rev-parse --show-toplevel)
VERSION=$(git describe --tags --dirty)
COMMIT_HASH=$(git rev-parse --short HEAD 2>/dev/null)
DATE=$(date "+%Y-%m-%d")
BUILD_PLATFORM=$(uname -a | awk '{print tolower($1);}')
IMPORT_DURING_SOLVE=${IMPORT_DURING_SOLVE:-false}
if [[ "$(pwd)" != "${DEP_ROOT}" ]]; then
echo "you are not in the root of the repo" 1>&2
echo "please cd to ${DEP_ROOT} before running this script" 1>&2
exit 1
fi
GO_BUILD_CMD="go build -a -installsuffix cgo"
GO_BUILD_LDFLAGS="-s -w -X main.commitHash=${COMMIT_HASH} -X main.buildDate=${DATE} -X main.version=${VERSION} -X main.flagImportDuringSolve=${IMPORT_DURING_SOLVE}"
if [[ -z "${DEP_BUILD_PLATFORMS}" ]]; then
DEP_BUILD_PLATFORMS="linux windows darwin freebsd"
fi
if [[ -z "${DEP_BUILD_ARCHS}" ]]; then
DEP_BUILD_ARCHS="amd64 386 ppc64 ppc64le s390x arm arm64"
fi
mkdir -p "${DEP_ROOT}/release"
for OS in ${DEP_BUILD_PLATFORMS[@]}; do
for ARCH in ${DEP_BUILD_ARCHS[@]}; do
NAME="dep-${OS}-${ARCH}"
if [[ "${OS}" == "windows" ]]; then
NAME="${NAME}.exe"
fi
# Enable CGO if building for OS X on OS X; see
# https://github.com/golang/dep/issues/1838 for details.
if [[ "${OS}" == "darwin" && "${BUILD_PLATFORM}" == "darwin" ]]; then
CGO_ENABLED=1
else
CGO_ENABLED=0
fi
if [[ "${ARCH}" == "ppc64" || "${ARCH}" == "ppc64le" || "${ARCH}" == "s390x" || "${ARCH}" == "arm" || "${ARCH}" == "arm64" ]] && [[ "${OS}" != "linux" ]]; then
# ppc64, ppc64le, s390x, arm and arm64 are only supported on Linux.
echo "Building for ${OS}/${ARCH} not supported."
else
echo "Building for ${OS}/${ARCH} with CGO_ENABLED=${CGO_ENABLED}"
GOARCH=${ARCH} GOOS=${OS} CGO_ENABLED=${CGO_ENABLED} ${GO_BUILD_CMD} -ldflags "${GO_BUILD_LDFLAGS}"\
-o "${DEP_ROOT}/release/${NAME}" ./cmd/dep/
pushd "${DEP_ROOT}/release" > /dev/null
shasum -a 256 "${NAME}" > "${NAME}.sha256"
popd > /dev/null
fi
done
done