mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00

And added gopath hack which allows to build without setting any GOPATH env. Just run the build script when you have installed golang.
53 lines
1.4 KiB
Bash
Executable File
53 lines
1.4 KiB
Bash
Executable File
#!/bin/sh -e
|
|
|
|
CDIR=$(cd `dirname "$0"` && pwd)
|
|
cd "$CDIR"
|
|
|
|
# set some environment variables
|
|
ORG_PATH="github.com/coreos"
|
|
REPO_PATH="${ORG_PATH}/etcd"
|
|
export GO15VENDOREXPERIMENT="1"
|
|
eval $(go env)
|
|
GIT_SHA=`git rev-parse --short HEAD || echo "GitNotFound"`
|
|
if [ ! -z "$FAILPOINTS" ]; then
|
|
GIT_SHA="$GIT_SHA"-FAILPOINTS
|
|
fi
|
|
|
|
# enable/disable failpoints
|
|
toggle_failpoints() {
|
|
FAILPKGS="etcdserver/ mvcc/backend/"
|
|
|
|
mode="disable"
|
|
if [ ! -z "$FAILPOINTS" ]; then mode="enable"; fi
|
|
if [ ! -z "$1" ]; then mode="$1"; fi
|
|
|
|
if which gofail >/dev/null 2>&1; then
|
|
gofail "$mode" $FAILPKGS
|
|
elif [ "$mode" != "disable" ]; then
|
|
echo "FAILPOINTS set but gofail not found"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
etcd_build() {
|
|
out="bin"
|
|
if [ -n "${BINDIR}" ]; then out="${BINDIR}"; fi
|
|
toggle_failpoints
|
|
# Static compilation is useful when etcd is run in a container
|
|
CGO_ENABLED=0 go build $GO_BUILD_FLAGS -installsuffix cgo -ldflags "-s -X ${REPO_PATH}/cmd/vendor/${REPO_PATH}/version.GitSHA=${GIT_SHA}" -o ${out}/etcd ${REPO_PATH}/cmd
|
|
CGO_ENABLED=0 go build $GO_BUILD_FLAGS -installsuffix cgo -ldflags "-s" -o ${out}/etcdctl ${REPO_PATH}/cmd/etcdctl
|
|
}
|
|
|
|
etcd_setup_gopath() {
|
|
export GOPATH=${CDIR}/gopath
|
|
rm -f $GOPATH/src
|
|
mkdir -p $GOPATH
|
|
ln -s ${CDIR}/cmd/vendor $GOPATH/src
|
|
}
|
|
|
|
toggle_failpoints
|
|
etcd_setup_gopath
|
|
|
|
# don't build when sourced
|
|
(echo "$0" | grep "/build$" > /dev/null) && etcd_build || true
|