| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #!/usr/bin/env sh
- #
- # Runs `go build` with flags configured for binary distribution. All
- # it does differently from `go build` is burn git commit and version
- # information into the binaries, so that we can track down user
- # issues.
- #
- # If you're packaging Tailscale for a distro, please consider using
- # this script, or executing equivalent commands in your
- # distro-specific build system.
- set -eu
- go="go"
- if [ -n "${TS_USE_TOOLCHAIN:-}" ]; then
- go="./tool/go"
- fi
- eval `CGO_ENABLED=0 GOOS=$($go env GOHOSTOS) GOARCH=$($go env GOHOSTARCH) $go run ./cmd/mkversion`
- if [ "$1" = "shellvars" ]; then
- cat <<EOF
- VERSION_MINOR="$VERSION_MINOR"
- VERSION_SHORT="$VERSION_SHORT"
- VERSION_LONG="$VERSION_LONG"
- VERSION_GIT_HASH="$VERSION_GIT_HASH"
- EOF
- exit 0
- fi
- tags=""
- ldflags="-X tailscale.com/version.longStamp=${VERSION_LONG} -X tailscale.com/version.shortStamp=${VERSION_SHORT}"
- # build_dist.sh arguments must precede go build arguments.
- while [ "$#" -gt 1 ]; do
- case "$1" in
- --extra-small)
- shift
- ldflags="$ldflags -w -s"
- tags="${tags:+$tags,}ts_omit_aws,ts_omit_bird,ts_omit_tap,ts_omit_kube"
- ;;
- --box)
- shift
- tags="${tags:+$tags,}ts_include_cli"
- ;;
- *)
- break
- ;;
- esac
- done
- exec $go build ${tags:+-tags=$tags} -ldflags "$ldflags" "$@"
|