cmd/printdep: add --next flag to use rc Go build hash instead

Updates tailscale/corp#36382

Change-Id: Ib7474b0aab901e98f0fe22761e26fd181650743c
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
pull/18540/head
Brad Fitzpatrick 16 hours ago committed by Brad Fitzpatrick
parent a374cc344e
commit 8f8236feb3

@ -17,6 +17,9 @@ func init() {
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)
if os.Getenv("TS_GO_NEXT") == "1" {
want = strings.TrimSpace(GoToolchainNextRev)
}
if tsRev != want {
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)

@ -19,6 +19,7 @@ var (
goToolchain = flag.Bool("go", false, "print the supported Go toolchain git hash (a github.com/tailscale/go commit)")
goToolchainURL = flag.Bool("go-url", false, "print the URL to the tarball of the Tailscale Go toolchain")
alpine = flag.Bool("alpine", false, "print the tag of alpine docker image")
next = flag.Bool("next", false, "if set, modifies --go or --go-url to use the upcoming/unreleased/rc Go release version instead")
)
func main() {
@ -27,8 +28,12 @@ func main() {
fmt.Println(strings.TrimSpace(ts.AlpineDockerTag))
return
}
goRev := strings.TrimSpace(ts.GoToolchainRev)
if *next {
goRev = strings.TrimSpace(ts.GoToolchainNextRev)
}
if *goToolchain {
fmt.Println(strings.TrimSpace(ts.GoToolchainRev))
fmt.Println(goRev)
}
if *goToolchainURL {
switch runtime.GOOS {
@ -36,6 +41,6 @@ func main() {
default:
log.Fatalf("unsupported GOOS %q", runtime.GOOS)
}
fmt.Printf("https://github.com/tailscale/go/releases/download/build-%s/%s-%s.tar.gz\n", strings.TrimSpace(ts.GoToolchainRev), runtime.GOOS, runtime.GOARCH)
fmt.Printf("https://github.com/tailscale/go/releases/download/build-%s/%s-%s.tar.gz\n", goRev, runtime.GOOS, runtime.GOARCH)
}
}

@ -26,6 +26,12 @@ var AlpineDockerTag string
//go:embed go.toolchain.rev
var GoToolchainRev string
// GoToolchainNextRev is like GoToolchainRev, but when using the
// "go.toolchain.next.rev" when TS_GO_NEXT=1 is set in the environment.
//
//go:embed go.toolchain.next.rev
var GoToolchainNextRev string
//lint:ignore U1000 used by tests + assert_ts_toolchain_match.go w/ right build tags
func tailscaleToolchainRev() (gitHash string, ok bool) {
bi, ok := debug.ReadBuildInfo()

Loading…
Cancel
Save