build 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/bin/sh -e
  2. # set some environment variables
  3. ORG_PATH="github.com/coreos"
  4. REPO_PATH="${ORG_PATH}/etcd"
  5. export GO15VENDOREXPERIMENT="1"
  6. eval $(go env)
  7. GIT_SHA=`git rev-parse --short HEAD || echo "GitNotFound"`
  8. if [ ! -z "$FAILPOINTS" ]; then
  9. GIT_SHA="$GIT_SHA"-FAILPOINTS
  10. fi
  11. # enable/disable failpoints
  12. toggle_failpoints() {
  13. FAILPKGS="etcdserver/ mvcc/backend/"
  14. mode="disable"
  15. if [ ! -z "$FAILPOINTS" ]; then mode="enable"; fi
  16. if [ ! -z "$1" ]; then mode="$1"; fi
  17. if which gofail >/dev/null 2>&1; then
  18. gofail "$mode" $FAILPKGS
  19. elif [ "$mode" != "disable" ]; then
  20. echo "FAILPOINTS set but gofail not found"
  21. exit 1
  22. fi
  23. }
  24. etcd_build() {
  25. out="bin"
  26. if [ -n "${BINDIR}" ]; then out="${BINDIR}"; fi
  27. toggle_failpoints
  28. # Static compilation is useful when etcd is run in a container
  29. 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/etcd || return
  30. CGO_ENABLED=0 go build $GO_BUILD_FLAGS -installsuffix cgo -ldflags "-s" -o ${out}/etcdctl ${REPO_PATH}/cmd/etcdctl || return
  31. }
  32. etcd_setup_gopath() {
  33. CDIR=$(cd `dirname "$0"` && pwd)
  34. cd "$CDIR"
  35. etcdGOPATH=${CDIR}/gopath
  36. # preserve old gopath to support building with unvendored tooling deps (e.g., gofail)
  37. export GOPATH=${etcdGOPATH}:$GOPATH
  38. rm -f ${etcdGOPATH}/src
  39. mkdir -p ${etcdGOPATH}
  40. ln -s ${CDIR}/cmd/vendor ${etcdGOPATH}/src
  41. }
  42. toggle_failpoints
  43. # only build when called directly, not sourced
  44. if echo "$0" | grep "build$" >/dev/null; then
  45. # force new gopath so builds outside of gopath work
  46. etcd_setup_gopath
  47. etcd_build
  48. fi