tailscale / go

Tailscale's rolling temporary fork of Go with emphasis on performance and memory/binary size reduction. We try to upstream everything and keep this repo's diff small.
https://github.com/tailscale/go/commits
BSD 3-Clause "New" or "Revised" License
66 stars 6 forks source link

patch: cmd/dist: stamp git commit into runtime.Version value #49

Open bradfitz opened 1 year ago

bradfitz commented 1 year ago

Summary: stamp the tailscale/go git commit into the toolchain Upstream status: not applicable, probably. Haven't asked. Importance: important for Tailscale to debug how binaries were built Example prior commit: 26292c0a2e9823c4216e8776912a43fd9e50d444 + 6a17f14c058e230cc620b72cf80099c2aa7f7335 (the latter adds a thing for NixOS we should either merge into the former or just drop)

cc @danderson

bradfitz commented 1 month ago

Latest commit in our fork is https://github.com/tailscale/go/commit/b3dc9ccd7a5

But I don't see us using this anymore.

@danderson, @raggi, I saw it got removed in https://github.com/tailscale/corp/commit/ec4addf43a630d495cd842d0ed31bf97c3c91374

Do we still need this?

It might still be nice to ask a Tailscale-built binary exactly which git rev of https://github.com/tailscale/go it was built from, but we don't have that property today. We only know that it's e.g. "1.23.1" but not more granular than that.

raggi commented 1 month ago

I don't have a strong opininion either way. Certainly being able to identify it sounds nice, though I'd also quite like it if this actually worked:

% ~/.cache/tailscale-go/bin/go version -m ~/.cache/tailscale-go/bin/go
/Users/raggi/.cache/tailscale-go/bin/go: go1.23.1
        path    cmd/go
        build   -buildmode=exe
        build   -compiler=gc
        build   -gcflags=cmd/...=-dwarf=false
        build   -trimpath=true
        build   DefaultGODEBUG=asynctimerchan=1,gotypesalias=0,httplaxcontentlength=1,httpmuxgo121=1,httpservecontentkeepheaders=1,netedns0=0,panicnil=1,tls10server=1,tls3des=1,tlskyber=0,tlsrsakex=1,tlsunsafeekm=1,winreadlinkvolume=0,winsymlink=0,x509keypairleaf=0,x509negativeserial=1
        build   CGO_ENABLED=0
        build   GOARCH=arm64
        build   GOOS=darwin
        build   GOARM64=v8.0

Maybe something to raise with upstream.

In the meantime, is there a way to persuade the go build to include a .dSYM? I just realized I'm not even too sure how to match up the binaries without one.