summaryrefslogtreecommitdiffhomepage
path: root/tool/gocross/gocross-wrapper.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tool/gocross/gocross-wrapper.sh')
-rwxr-xr-xtool/gocross/gocross-wrapper.sh36
1 files changed, 33 insertions, 3 deletions
diff --git a/tool/gocross/gocross-wrapper.sh b/tool/gocross/gocross-wrapper.sh
index 366011fef..091028524 100755
--- a/tool/gocross/gocross-wrapper.sh
+++ b/tool/gocross/gocross-wrapper.sh
@@ -3,8 +3,11 @@
# SPDX-License-Identifier: BSD-3-Clause
#
# gocross-wrapper.sh is a wrapper that can be aliased to 'go', which
-# transparently builds gocross using a "bootstrap" Go toolchain, and
-# then invokes gocross.
+# transparently runs the version of github.com/tailscale/go as specified repo's
+# go.toolchain.rev file.
+#
+# It also conditionally (if TS_USE_GOCROSS=1) builds gocross and uses it as a go
+# wrapper to inject certain go flags.
set -euo pipefail
@@ -76,6 +79,14 @@ case "$REV" in
;;
esac
+# gocross is opt-in as of 2025-06-16. See tailscale/corp#26717.
+# It's primarily used for xcode builds, and a bit still for Windows.
+# In the past we needed it for git version stamping on Linux etc, but
+# Go does that itself nowadays.
+if [ "${TS_USE_GOCROSS:-}" != "1" ]; then
+ exit 0 # out of subsehll
+fi
+
if [[ -d "$toolchain" ]]; then
# A toolchain exists, but is it recent enough to compile gocross? If not,
# wipe it out so that the next if block fetches a usable one.
@@ -119,4 +130,23 @@ if [[ "$gocross_ok" == "0" ]]; then
fi
) # End of the subshell execution.
-exec "${BASH_SOURCE%/*}/../../gocross" "$@"
+repo_root="${BASH_SOURCE%/*}/../.."
+
+# gocross is opt-in as of 2025-06-16. See tailscale/corp#26717
+# and comment above in this file.
+if [ "${TS_USE_GOCROSS:-}" != "1" ]; then
+ read -r REV <"${repo_root}/go.toolchain.rev"
+ case "$REV" in
+ /*)
+ toolchain="$REV"
+ ;;
+ *)
+ # If the prior subshell completed successfully, this toolchain location
+ # should be valid at this point.
+ toolchain="$HOME/.cache/tsgo/$REV"
+ ;;
+ esac
+ exec "$toolchain/bin/go" "$@"
+fi
+
+exec "${repo_root}/gocross" "$@"