Browse Source

use the vcs information from ReadBuildInfo in Go 1.18

pull/1381/head
Marten Seemann 3 years ago
parent
commit
1e87471c10
  1. 14
      p2p/protocol/identify/id.go
  2. 23
      p2p/protocol/identify/id_go117.go
  3. 43
      p2p/protocol/identify/id_go118.go

14
p2p/protocol/identify/id.go

@ -4,7 +4,6 @@ import (
"context"
"fmt"
"io"
"runtime/debug"
"sync"
"time"
@ -55,19 +54,6 @@ var (
defaultUserAgent = "github.com/libp2p/go-libp2p"
)
func init() {
bi, ok := debug.ReadBuildInfo()
if !ok {
return
}
version := bi.Main.Version
if version == "(devel)" {
defaultUserAgent = bi.Main.Path
} else {
defaultUserAgent = fmt.Sprintf("%s@%s", bi.Main.Path, bi.Main.Version)
}
}
type addPeerHandlerReq struct {
rp peer.ID
resp chan *peerHandler

23
p2p/protocol/identify/id_go117.go

@ -0,0 +1,23 @@
//go:build !go1.18
// +build !go1.18
package identify
import (
"fmt"
"runtime/debug"
)
func init() {
bi, ok := debug.ReadBuildInfo()
// ok will only be true if this is built as a dependency of another module
if !ok {
return
}
version := bi.Main.Version
if version == "(devel)" {
defaultUserAgent = bi.Main.Path
} else {
defaultUserAgent = fmt.Sprintf("%s@%s", bi.Main.Path, bi.Main.Version)
}
}

43
p2p/protocol/identify/id_go118.go

@ -0,0 +1,43 @@
//go:build go1.18
// +build go1.18
package identify
import (
"fmt"
"runtime/debug"
)
func init() {
bi, ok := debug.ReadBuildInfo()
if !ok {
return
}
version := bi.Main.Version
// version will only be non-empty if built as a dependency of another module
if version == "" {
return
}
if version != "(devel)" {
defaultUserAgent = fmt.Sprintf("%s@%s", bi.Main.Path, bi.Main.Version)
return
}
var revision string
var dirty bool
for _, bs := range bi.Settings {
switch bs.Key {
case "vcs.revision":
revision = bs.Value
case "vcs.modified":
if bs.Value == "true" {
dirty = true
}
}
}
defaultUserAgent = fmt.Sprintf("%s@%s", bi.Main.Path, revision)
if dirty {
defaultUserAgent += " (dirty)"
}
}
Loading…
Cancel
Save