mirror of
https://github.com/tailscale/tailscale.git
synced 2026-10-23 03:37:19 +09:00
Add vmtests that boot pairs of gokrazy VMs whose tailscale and tailscaled are minimal builds and check that IP traffic flows between them over WireGuard, so we notice if a minimal build stops doing its one job: build_dist.sh --extra-small (direct path through NATs), that minus NAT traversal (DERP across NATs, direct on a shared LAN), and DERP-only. They found that "tailscale up" built with ts_omit_ipnbus returned before calling Start or EditPrefs, making it a no-op. Fix that, and have it wait for the Running state by polling tailscaled's status instead of watching the IPN bus, so scripts can rely on it as with normal builds. The extra-small feature list moves to featuretags.ExtraSmall so build_dist.sh (via a new "featuretags --extra-small") and vmtest share it. The gokrazy builder gains --output and --go-build-tags flags to build the variant images, and natlabprep --gokrazy prebuilds them all for CI. Updates #13038 Updates #12614 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com> Change-Id: I0caa2c7b3adf2399da09b6d07a942f1dc34e8486
76 lines
2.0 KiB
Bash
Executable File
76 lines
2.0 KiB
Bash
Executable File
#!/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 [ "$#" -ge 1 ] && [ "$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="${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)
|
|
if [ ! -z "${TAGS:-}" ]; then
|
|
echo "set either --extra-small or \$TAGS, but not both"
|
|
exit 1
|
|
fi
|
|
shift
|
|
ldflags="$ldflags -w -s"
|
|
tags="${tags:+$tags,},$(GOOS= GOARCH= $go run ./cmd/featuretags --extra-small)"
|
|
;;
|
|
--min)
|
|
# --min is like --extra-small but even smaller, removing all features,
|
|
# even if it results in a useless binary (e.g. removing both netstack +
|
|
# osrouter). It exists for benchmarking purposes only.
|
|
shift
|
|
ldflags="$ldflags -w -s"
|
|
tags="${tags:+$tags,},$(GOOS= GOARCH= $go run ./cmd/featuretags --min)"
|
|
;;
|
|
--strip)
|
|
# --min overrides your flags, when you're using custom tags and want to
|
|
# additionally strip symbols to help reduce the size, this is the easiest
|
|
# way to do it.
|
|
shift
|
|
ldflags="$ldflags -w -s"
|
|
;;
|
|
--box)
|
|
if [ ! -z "${TAGS:-}" ]; then
|
|
echo "set either --box or \$TAGS, but not both"
|
|
exit 1
|
|
fi
|
|
shift
|
|
tags="${tags:+$tags,}ts_include_cli"
|
|
;;
|
|
*)
|
|
break
|
|
;;
|
|
esac
|
|
done
|
|
|
|
exec $go build ${tags:+-tags=$tags} -trimpath -ldflags "$ldflags" "$@"
|