mirror of
https://github.com/tailscale/tailscale.git
synced 2026-03-25 09:42:39 -04:00
The old check was too aggressive and required TS_GO_NEXT=1 at runtime as well, which is too strict and onerous. This is a sanity check only (and an outdated one, at that); it's okay for it to be slightly loose and permit two possible values. If either is working, we're already way past the old bug that this was introduced to catch. Updates tailscale/corp#36382 Change-Id: Ib9a62e10382cd889ba590c3539e6b8535c6b19fe Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
31 lines
1.1 KiB
Go
31 lines
1.1 KiB
Go
// Copyright (c) Tailscale Inc & contributors
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
//go:build tailscale_go
|
|
|
|
package tailscaleroot
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
func init() {
|
|
tsRev, ok := tailscaleToolchainRev()
|
|
if !ok {
|
|
panic("binary built with tailscale_go build tag but failed to read build info or find tailscale.toolchain.rev in build info")
|
|
}
|
|
want := strings.TrimSpace(GoToolchainRev)
|
|
// Also permit the "next" toolchain rev, which is used in the main branch and will eventually become the new "current" rev.
|
|
// This allows building with TS_GO_NEXT=1 and then running the resulting binary without TS_GO_NEXT=1.
|
|
wantAlt := strings.TrimSpace(GoToolchainNextRev)
|
|
if tsRev != want && tsRev != wantAlt {
|
|
if os.Getenv("TS_PERMIT_TOOLCHAIN_MISMATCH") == "1" {
|
|
fmt.Fprintf(os.Stderr, "tailscale.toolchain.rev = %q, want %q; but ignoring due to TS_PERMIT_TOOLCHAIN_MISMATCH=1\n", tsRev, want)
|
|
return
|
|
}
|
|
panic(fmt.Sprintf("binary built with tailscale_go build tag but Go toolchain %q doesn't match github.com/tailscale/tailscale expected value %q; override this failure with TS_PERMIT_TOOLCHAIN_MISMATCH=1", tsRev, want))
|
|
}
|
|
}
|