From 6d7c36bb8f87a89ebf7b6f55d47ec8332768834b Mon Sep 17 00:00:00 2001
From: Daniel Liu <139250065@qq.com>
Date: Sat, 15 Nov 2025 19:16:54 +0800
Subject: [PATCH] all: upgrade package version #30638 (#1745)
---
build/ci.go | 3 +-
cmd/XDC/bugcmd.go | 10 +--
cmd/XDC/config.go | 5 +-
cmd/XDC/consolecmd_test.go | 12 +++-
cmd/XDC/main.go | 6 +-
cmd/XDC/misccmd.go | 17 ++++--
cmd/abigen/main.go | 2 +-
cmd/ethkey/main.go | 9 +--
cmd/evm/main.go | 4 +-
cmd/p2psim/main.go | 7 +--
eth/backend.go | 6 +-
internal/build/env.go | 108 +++++++++++++++++++++++++++------
internal/flags/helpers.go | 11 ++--
internal/version/vcs.go | 77 +++++++++++++++++++++++
internal/version/version.go | 52 ++++++++++++++++
{params => version}/version.go | 33 ++--------
16 files changed, 271 insertions(+), 91 deletions(-)
create mode 100644 internal/version/vcs.go
create mode 100644 internal/version/version.go
rename {params => version}/version.go (51%)
diff --git a/build/ci.go b/build/ci.go
index 8915c383c3..ae82bd1922 100644
--- a/build/ci.go
+++ b/build/ci.go
@@ -179,7 +179,8 @@ func doInstall(cmdline []string) {
func buildFlags(env build.Environment) (flags []string) {
var ld []string
if env.Commit != "" {
- ld = append(ld, "-X", "main.gitCommit="+env.Commit)
+ ld = append(ld, "-X", "github.com/XinFinOrg/XDPoSChain/internal/version.gitCommit="+env.Commit)
+ ld = append(ld, "-X", "github.com/XinFinOrg/XDPoSChain/internal/version.gitDate="+env.Date)
}
if runtime.GOOS == "darwin" {
ld = append(ld, "-s")
diff --git a/cmd/XDC/bugcmd.go b/cmd/XDC/bugcmd.go
index 201883f8c9..9c31daf11b 100644
--- a/cmd/XDC/bugcmd.go
+++ b/cmd/XDC/bugcmd.go
@@ -27,7 +27,7 @@ import (
"strings"
"github.com/XinFinOrg/XDPoSChain/cmd/internal/browser"
- "github.com/XinFinOrg/XDPoSChain/params"
+ "github.com/XinFinOrg/XDPoSChain/internal/version"
"github.com/urfave/cli/v2"
)
@@ -47,7 +47,7 @@ func reportBug(ctx *cli.Context) error {
var buff bytes.Buffer
fmt.Fprintln(&buff, header)
- fmt.Fprintln(&buff, "Version:", params.Version)
+ fmt.Fprintln(&buff, "Version:", version.WithMeta)
fmt.Fprintln(&buff, "Go Version:", runtime.Version())
fmt.Fprintln(&buff, "OS:", runtime.GOOS)
printOSDetails(&buff)
@@ -97,9 +97,9 @@ func printCmdOut(w io.Writer, prefix, path string, args ...string) {
const header = `Please answer these questions before submitting your issue. Thanks!
#### What did you do?
-
+
#### What did you expect to see?
-
+
#### What did you see instead?
-
+
#### System details`
diff --git a/cmd/XDC/config.go b/cmd/XDC/config.go
index a5afdc06d4..057dcbc263 100644
--- a/cmd/XDC/config.go
+++ b/cmd/XDC/config.go
@@ -39,10 +39,10 @@ import (
"github.com/XinFinOrg/XDPoSChain/eth/ethconfig"
"github.com/XinFinOrg/XDPoSChain/internal/ethapi"
"github.com/XinFinOrg/XDPoSChain/internal/flags"
+ "github.com/XinFinOrg/XDPoSChain/internal/version"
"github.com/XinFinOrg/XDPoSChain/log"
"github.com/XinFinOrg/XDPoSChain/metrics"
"github.com/XinFinOrg/XDPoSChain/node"
- "github.com/XinFinOrg/XDPoSChain/params"
"github.com/naoina/toml"
"github.com/urfave/cli/v2"
)
@@ -122,9 +122,10 @@ func loadConfig(file string, cfg *XDCConfig) error {
}
func defaultNodeConfig() node.Config {
+ git, _ := version.VCS()
cfg := node.DefaultConfig
cfg.Name = clientIdentifier
- cfg.Version = params.VersionWithCommit(gitCommit)
+ cfg.Version = version.WithCommit(git.Commit, git.Date)
cfg.HTTPModules = append(cfg.HTTPModules, "eth")
cfg.WSModules = append(cfg.WSModules, "eth")
cfg.IPCPath = "XDC.ipc"
diff --git a/cmd/XDC/consolecmd_test.go b/cmd/XDC/consolecmd_test.go
index 51048491eb..7dc76c498c 100644
--- a/cmd/XDC/consolecmd_test.go
+++ b/cmd/XDC/consolecmd_test.go
@@ -26,7 +26,7 @@ import (
"testing"
"time"
- "github.com/XinFinOrg/XDPoSChain/params"
+ "github.com/XinFinOrg/XDPoSChain/internal/version"
)
const (
@@ -50,7 +50,10 @@ func TestConsoleWelcome(t *testing.T) {
XDC.SetTemplateFunc("goos", func() string { return runtime.GOOS })
XDC.SetTemplateFunc("goarch", func() string { return runtime.GOARCH })
XDC.SetTemplateFunc("gover", runtime.Version)
- XDC.SetTemplateFunc("XDCver", func() string { return params.Version })
+ XDC.SetTemplateFunc("XDCver", func() string {
+ git, _ := version.VCS()
+ return version.WithCommit(git.Commit, git.Date)
+ })
XDC.SetTemplateFunc("niltime", func() string {
return time.Unix(1559211559, 0).Format("Mon Jan 02 2006 15:04:05 GMT-0700 (MST)")
})
@@ -137,7 +140,10 @@ func testAttachWelcome(t *testing.T, XDC *testXDC, endpoint, apis string) {
attach.SetTemplateFunc("goos", func() string { return runtime.GOOS })
attach.SetTemplateFunc("goarch", func() string { return runtime.GOARCH })
attach.SetTemplateFunc("gover", runtime.Version)
- attach.SetTemplateFunc("XDCver", func() string { return params.Version })
+ attach.SetTemplateFunc("XDCver", func() string {
+ git, _ := version.VCS()
+ return version.WithCommit(git.Commit, git.Date)
+ })
attach.SetTemplateFunc("etherbase", func() string { return XDC.Etherbase })
attach.SetTemplateFunc("niltime", func() string {
return time.Unix(1559211559, 0).Format("Mon Jan 02 2006 15:04:05 GMT-0700 (MST)")
diff --git a/cmd/XDC/main.go b/cmd/XDC/main.go
index a3143c8508..7312769aec 100644
--- a/cmd/XDC/main.go
+++ b/cmd/XDC/main.go
@@ -53,10 +53,8 @@ const (
)
var (
- // Git SHA1 commit hash of the release (set via linker flags)
- gitCommit = ""
// The app that holds all commands and flags.
- app = flags.NewApp(gitCommit, "the XDPoSChain command line interface")
+ app = flags.NewApp("the XDPoSChain command line interface")
// The app that holds all commands and flags.
nodeFlags = slices.Concat([]cli.Flag{
@@ -194,7 +192,7 @@ var (
func init() {
// Initialize the CLI app and start XDC
app.Action = XDC
- app.Copyright = "Copyright (c) 2024 XDPoSChain"
+ app.Copyright = "Copyright (c) 2025 XDPoSChain"
app.Commands = []*cli.Command{
// See chaincmd.go:
initCommand,
diff --git a/cmd/XDC/misccmd.go b/cmd/XDC/misccmd.go
index cd5cdcc208..051613a0df 100644
--- a/cmd/XDC/misccmd.go
+++ b/cmd/XDC/misccmd.go
@@ -24,13 +24,13 @@ import (
"github.com/XinFinOrg/XDPoSChain/eth"
"github.com/XinFinOrg/XDPoSChain/eth/ethconfig"
- "github.com/XinFinOrg/XDPoSChain/params"
+ "github.com/XinFinOrg/XDPoSChain/internal/version"
"github.com/urfave/cli/v2"
)
var (
versionCommand = &cli.Command{
- Action: version,
+ Action: printVersion,
Name: "version",
Usage: "Print version numbers",
ArgsUsage: " ",
@@ -46,11 +46,16 @@ The output of this command is supposed to be machine-readable.
}
)
-func version(ctx *cli.Context) error {
+func printVersion(ctx *cli.Context) error {
+ git, _ := version.VCS()
+
fmt.Println(strings.Title(clientIdentifier))
- fmt.Println("Version:", params.Version)
- if gitCommit != "" {
- fmt.Println("Git Commit:", gitCommit)
+ fmt.Println("Version:", version.WithMeta)
+ if git.Commit != "" {
+ fmt.Println("Git Commit:", git.Commit)
+ }
+ if git.Date != "" {
+ fmt.Println("Git Commit Date:", git.Date)
}
fmt.Println("Architecture:", runtime.GOARCH)
fmt.Println("Protocol Versions:", eth.ProtocolVersions)
diff --git a/cmd/abigen/main.go b/cmd/abigen/main.go
index 5645f4582e..8338eb8e79 100644
--- a/cmd/abigen/main.go
+++ b/cmd/abigen/main.go
@@ -73,7 +73,7 @@ var (
}
)
-var app = flags.NewApp("", "XDC ABI wrapper code generator")
+var app = flags.NewApp("XDC ABI wrapper code generator")
func init() {
app.Name = "abigen"
diff --git a/cmd/ethkey/main.go b/cmd/ethkey/main.go
index f1840227a3..b3d182c53d 100644
--- a/cmd/ethkey/main.go
+++ b/cmd/ethkey/main.go
@@ -28,13 +28,10 @@ const (
defaultKeyfileName = "keyfile.json"
)
-// Git SHA1 commit hash of the release (set via linker flags)
-var gitCommit = ""
-
var app *cli.App
func init() {
- app = flags.NewApp(gitCommit, "an Ethereum key manager")
+ app = flags.NewApp("an Ethereum key manager")
app.Commands = []*cli.Command{
commandGenerate,
commandInspect,
@@ -53,10 +50,6 @@ var (
Name: "json",
Usage: "output JSON instead of human-readable format",
}
- messageFlag = &cli.StringFlag{
- Name: "message",
- Usage: "the file that contains the message to sign/verify",
- }
)
func main() {
diff --git a/cmd/evm/main.go b/cmd/evm/main.go
index 0ac8e896e2..ec9d3e4245 100644
--- a/cmd/evm/main.go
+++ b/cmd/evm/main.go
@@ -27,9 +27,7 @@ import (
)
var (
- gitCommit = "" // Git SHA1 commit hash of the release (set via linker flags)
-
- app = flags.NewApp(gitCommit, "the evm command line interface")
+ app = flags.NewApp("the evm command line interface")
)
var (
diff --git a/cmd/p2psim/main.go b/cmd/p2psim/main.go
index eb9bb179be..3b0faa8ccd 100644
--- a/cmd/p2psim/main.go
+++ b/cmd/p2psim/main.go
@@ -100,13 +100,8 @@ var (
}
)
-var (
- // Git information set by linker when building with ci.go.
- gitCommit string
-)
-
func main() {
- app := flags.NewApp(gitCommit, "devp2p simulation command-line client")
+ app := flags.NewApp("devp2p simulation command-line client")
app.Usage = "devp2p simulation command-line client"
app.Flags = []cli.Flag{
apiFlag,
diff --git a/eth/backend.go b/eth/backend.go
index 54e36eaab4..7bcc796182 100644
--- a/eth/backend.go
+++ b/eth/backend.go
@@ -52,6 +52,7 @@ import (
"github.com/XinFinOrg/XDPoSChain/ethdb"
"github.com/XinFinOrg/XDPoSChain/event"
"github.com/XinFinOrg/XDPoSChain/internal/ethapi"
+ "github.com/XinFinOrg/XDPoSChain/internal/version"
"github.com/XinFinOrg/XDPoSChain/log"
"github.com/XinFinOrg/XDPoSChain/miner"
"github.com/XinFinOrg/XDPoSChain/node"
@@ -59,6 +60,7 @@ import (
"github.com/XinFinOrg/XDPoSChain/params"
"github.com/XinFinOrg/XDPoSChain/rlp"
"github.com/XinFinOrg/XDPoSChain/rpc"
+ ver "github.com/XinFinOrg/XDPoSChain/version"
)
// Ethereum implements the Ethereum full node service.
@@ -166,7 +168,7 @@ func New(stack *node.Node, config *ethconfig.Config, XDCXServ *XDCx.XDCX, lendin
if !config.SkipBcVersionCheck {
if bcVersion != nil && *bcVersion > core.BlockChainVersion {
- return nil, fmt.Errorf("database version is v%d, not supports v%d", *bcVersion, core.BlockChainVersion)
+ return nil, fmt.Errorf("database version is v%d, XDC %s only supports v%d", *bcVersion, version.WithMeta, core.BlockChainVersion)
} else if bcVersion == nil || *bcVersion < core.BlockChainVersion {
if bcVersion != nil { // only print warning on upgrade, not on init
log.Warn("Upgrade blockchain database version", "from", dbVer, "to", core.BlockChainVersion)
@@ -358,7 +360,7 @@ func makeExtraData(extra []byte) []byte {
if len(extra) == 0 {
// create default extradata
extra, _ = rlp.EncodeToBytes([]interface{}{
- uint(params.VersionMajor<<16 | params.VersionMinor<<8 | params.VersionPatch),
+ uint(ver.Major<<16 | ver.Minor<<8 | ver.Patch),
"XDC",
runtime.Version(),
runtime.GOOS,
diff --git a/internal/build/env.go b/internal/build/env.go
index ef14627458..b2abd3e7c3 100644
--- a/internal/build/env.go
+++ b/internal/build/env.go
@@ -20,32 +20,38 @@ import (
"flag"
"fmt"
"os"
+ "regexp"
+ "strconv"
"strings"
+ "time"
)
var (
// These flags override values in build env.
- GitCommitFlag = flag.String("git-commit", "", `Overrides git commit hash embedded into executables`)
- GitBranchFlag = flag.String("git-branch", "", `Overrides git branch being built`)
- GitTagFlag = flag.String("git-tag", "", `Overrides git tag being built`)
- BuildnumFlag = flag.String("buildnum", "", `Overrides CI build number`)
- PullRequestFlag = flag.Bool("pull-request", false, `Overrides pull request status of the build`)
- CronJobFlag = flag.Bool("cron-job", false, `Overrides cron job status of the build`)
+ GitCommitFlag = flag.String("git-commit", "", `Overrides git commit hash embedded into executables`)
+ GitBranchFlag = flag.String("git-branch", "", `Overrides git branch being built`)
+ GitTagFlag = flag.String("git-tag", "", `Overrides git tag being built`)
+ BuildnumFlag = flag.String("buildnum", "", `Overrides CI build number`)
+ PullRequestFlag = flag.Bool("pull-request", false, `Overrides pull request status of the build`)
+ CronJobFlag = flag.Bool("cron-job", false, `Overrides cron job status of the build`)
+ UbuntuVersionFlag = flag.String("ubuntu", "", `Sets the ubuntu version being built for`)
)
// Environment contains metadata provided by the build environment.
type Environment struct {
- Name string // name of the environment
- Repo string // name of GitHub repo
- Commit, Branch, Tag string // Git info
- Buildnum string
- IsPullRequest bool
- IsCronJob bool
+ CI bool
+ Name string // name of the environment
+ Repo string // name of GitHub repo
+ Commit, Date, Branch, Tag string // Git info
+ Buildnum string
+ UbuntuVersion string // Ubuntu version being built for
+ IsPullRequest bool
+ IsCronJob bool
}
func (env Environment) String() string {
- return fmt.Sprintf("%s env (commit:%s branch:%s tag:%s buildnum:%s pr:%t)",
- env.Name, env.Commit, env.Branch, env.Tag, env.Buildnum, env.IsPullRequest)
+ return fmt.Sprintf("%s env (commit:%s date:%s branch:%s tag:%s buildnum:%s pr:%t)",
+ env.Name, env.Commit, env.Date, env.Branch, env.Tag, env.Buildnum, env.IsPullRequest)
}
// Env returns metadata about the current CI environment, falling back to LocalEnv
@@ -53,10 +59,16 @@ func (env Environment) String() string {
func Env() Environment {
switch {
case os.Getenv("CI") == "true" && os.Getenv("TRAVIS") == "true":
+ commit := os.Getenv("TRAVIS_PULL_REQUEST_SHA")
+ if commit == "" {
+ commit = os.Getenv("TRAVIS_COMMIT")
+ }
return Environment{
+ CI: true,
Name: "travis",
Repo: os.Getenv("TRAVIS_REPO_SLUG"),
- Commit: os.Getenv("TRAVIS_COMMIT"),
+ Commit: commit,
+ Date: getDate(commit),
Branch: os.Getenv("TRAVIS_BRANCH"),
Tag: os.Getenv("TRAVIS_TAG"),
Buildnum: os.Getenv("TRAVIS_BUILD_NUMBER"),
@@ -64,16 +76,49 @@ func Env() Environment {
IsCronJob: os.Getenv("TRAVIS_EVENT_TYPE") == "cron",
}
case os.Getenv("CI") == "True" && os.Getenv("APPVEYOR") == "True":
+ commit := os.Getenv("APPVEYOR_PULL_REQUEST_HEAD_COMMIT")
+ if commit == "" {
+ commit = os.Getenv("APPVEYOR_REPO_COMMIT")
+ }
return Environment{
+ CI: true,
Name: "appveyor",
Repo: os.Getenv("APPVEYOR_REPO_NAME"),
- Commit: os.Getenv("APPVEYOR_REPO_COMMIT"),
+ Commit: commit,
+ Date: getDate(commit),
Branch: os.Getenv("APPVEYOR_REPO_BRANCH"),
Tag: os.Getenv("APPVEYOR_REPO_TAG_NAME"),
Buildnum: os.Getenv("APPVEYOR_BUILD_NUMBER"),
IsPullRequest: os.Getenv("APPVEYOR_PULL_REQUEST_NUMBER") != "",
IsCronJob: os.Getenv("APPVEYOR_SCHEDULED_BUILD") == "True",
}
+ case os.Getenv("CI") == "true" && os.Getenv("GITHUB_ACTIONS") == "true":
+ commit := os.Getenv("GITHUB_SHA")
+ reftype := os.Getenv("GITHUB_REF_TYPE")
+ isPR := os.Getenv("GITHUB_HEAD_REF") != ""
+ tag := ""
+ branch := ""
+ switch {
+ case isPR:
+ branch = os.Getenv("GITHUB_BASE_REF")
+ case reftype == "branch":
+ branch = os.Getenv("GITHUB_REF_NAME")
+ case reftype == "tag":
+ tag = os.Getenv("GITHUB_REF_NAME")
+ }
+ return Environment{
+ CI: true,
+ Name: "github-actions",
+ Repo: os.Getenv("GITHUB_REPOSITORY"),
+ Commit: commit,
+ Date: getDate(commit),
+ Branch: branch,
+ Tag: tag,
+ IsPullRequest: isPR,
+ Buildnum: os.Getenv("GITHUB_RUN_ID"),
+ IsCronJob: os.Getenv("GITHUB_EVENT_NAME") == "schedule",
+ }
+
default:
return LocalEnv()
}
@@ -84,14 +129,23 @@ func LocalEnv() Environment {
env := applyEnvFlags(Environment{Name: "local", Repo: "XDPoSChain/XDPoSChain"})
head := readGitFile("HEAD")
- if splits := strings.Split(head, " "); len(splits) == 2 {
- head = splits[1]
+ if fields := strings.Fields(head); len(fields) == 2 {
+ head = fields[1]
} else {
+ // In this case we are in "detached head" state
+ // see: https://git-scm.com/docs/git-checkout#_detached_head
+ // Additional check required to verify, that file contains commit hash
+ commitRe, _ := regexp.Compile("^([0-9a-f]{40})$")
+ if commit := commitRe.FindString(head); commit != "" && env.Commit == "" {
+ env.Commit = commit
+ env.Date = getDate(env.Commit)
+ }
return env
}
if env.Commit == "" {
env.Commit = readGitFile(head)
}
+ env.Date = getDate(env.Commit)
if env.Branch == "" {
if head != "HEAD" {
env.Branch = strings.TrimPrefix(head, "refs/heads/")
@@ -107,6 +161,21 @@ func firstLine(s string) string {
return strings.Split(s, "\n")[0]
}
+func getDate(commit string) string {
+ if commit == "" {
+ return ""
+ }
+ out := RunGit("show", "-s", "--format=%ct", commit)
+ if out == "" {
+ return ""
+ }
+ date, err := strconv.ParseInt(strings.TrimSpace(out), 10, 64)
+ if err != nil {
+ panic(fmt.Sprintf("failed to parse git commit date: %v", err))
+ }
+ return time.Unix(date, 0).Format("20060102")
+}
+
func applyEnvFlags(env Environment) Environment {
if !flag.Parsed() {
panic("you need to call flag.Parse before Env or LocalEnv")
@@ -129,5 +198,8 @@ func applyEnvFlags(env Environment) Environment {
if *CronJobFlag {
env.IsCronJob = true
}
+ if *UbuntuVersionFlag != "" {
+ env.UbuntuVersion = *UbuntuVersionFlag
+ }
return env
}
diff --git a/internal/flags/helpers.go b/internal/flags/helpers.go
index 32935e87f9..486acdcc7b 100644
--- a/internal/flags/helpers.go
+++ b/internal/flags/helpers.go
@@ -23,8 +23,8 @@ import (
"sort"
"strings"
+ "github.com/XinFinOrg/XDPoSChain/internal/version"
"github.com/XinFinOrg/XDPoSChain/log"
- "github.com/XinFinOrg/XDPoSChain/params"
"github.com/mattn/go-isatty"
"github.com/urfave/cli/v2"
)
@@ -34,12 +34,13 @@ import (
var usecolor = (isatty.IsTerminal(os.Stdout.Fd()) || isatty.IsCygwinTerminal(os.Stdout.Fd())) && os.Getenv("TERM") != "dumb"
// NewApp creates an app with sane defaults.
-func NewApp(gitCommit, usage string) *cli.App {
+func NewApp(usage string) *cli.App {
+ git, _ := version.VCS()
app := cli.NewApp()
app.EnableBashCompletion = true
- app.Version = params.VersionWithCommit(gitCommit)
+ app.Version = version.WithCommit(git.Commit, git.Date)
app.Usage = usage
- app.Copyright = "Copyright 2024 XDPoSChain"
+ app.Copyright = "Copyright 2025 XDPoSChain"
app.Before = func(ctx *cli.Context) error {
MigrateGlobalFlags(ctx)
return nil
@@ -104,7 +105,7 @@ func doMigrateFlags(ctx *cli.Context) {
for _, parent := range ctx.Lineage()[1:] {
if parent.IsSet(name) {
// When iterating across the lineage, we will be served both
- // the 'canon' and alias formats of all commmands. In most cases,
+ // the 'canon' and alias formats of all commands. In most cases,
// it's fine to set it in the ctx multiple times (one for each
// name), however, the Slice-flags are not fine.
// The slice-flags accumulate, so if we set it once as
diff --git a/internal/version/vcs.go b/internal/version/vcs.go
new file mode 100644
index 0000000000..a6f14e0140
--- /dev/null
+++ b/internal/version/vcs.go
@@ -0,0 +1,77 @@
+// Copyright 2022 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see .
+
+package version
+
+import (
+ "runtime/debug"
+ "time"
+)
+
+// the go tool embeds VCS information into the build.
+
+const (
+ govcsTimeLayout = "2006-01-02T15:04:05Z"
+ ourTimeLayout = "20060102"
+)
+
+// These variables are set at build-time by the linker when the build is
+// done by build/ci.go.
+var gitCommit, gitDate string
+
+// VCSInfo represents the git repository state.
+type VCSInfo struct {
+ Commit string // head commit hash
+ Date string // commit time in YYYYMMDD format
+ Dirty bool
+}
+
+// VCS returns version control information of the current executable.
+func VCS() (VCSInfo, bool) {
+ if gitCommit != "" {
+ // Use information set by the build script if present.
+ return VCSInfo{Commit: gitCommit, Date: gitDate}, true
+ }
+ if buildInfo, ok := debug.ReadBuildInfo(); ok {
+ if buildInfo.Main.Path == ourPath {
+ return buildInfoVCS(buildInfo)
+ }
+ }
+ return VCSInfo{}, false
+}
+
+// buildInfoVCS returns VCS information of the build.
+func buildInfoVCS(info *debug.BuildInfo) (s VCSInfo, ok bool) {
+ for _, v := range info.Settings {
+ switch v.Key {
+ case "vcs.revision":
+ s.Commit = v.Value
+ case "vcs.modified":
+ if v.Value == "true" {
+ s.Dirty = true
+ }
+ case "vcs.time":
+ t, err := time.Parse(govcsTimeLayout, v.Value)
+ if err == nil {
+ s.Date = t.Format(ourTimeLayout)
+ }
+ }
+ }
+ if s.Commit != "" && s.Date != "" {
+ ok = true
+ }
+ return
+}
diff --git a/internal/version/version.go b/internal/version/version.go
new file mode 100644
index 0000000000..4c066eb5dd
--- /dev/null
+++ b/internal/version/version.go
@@ -0,0 +1,52 @@
+// Copyright 2022 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see .
+
+// Package version implements reading of build version information.
+package version
+
+import (
+ "fmt"
+
+ "github.com/XinFinOrg/XDPoSChain/version"
+)
+
+const ourPath = "github.com/XinFinOrg/XDPoSChain" // Path to our module
+
+// Family holds the textual version string for major.minor
+var Family = fmt.Sprintf("%d.%d", version.Major, version.Minor)
+
+// Semantic holds the textual version string for major.minor.patch.
+var Semantic = fmt.Sprintf("%d.%d.%d", version.Major, version.Minor, version.Patch)
+
+// WithMeta holds the textual version string including the metadata.
+var WithMeta = func() string {
+ v := Semantic
+ if version.Meta != "" {
+ v += "-" + version.Meta
+ }
+ return v
+}()
+
+func WithCommit(gitCommit, gitDate string) string {
+ vsn := WithMeta
+ if len(gitCommit) >= 8 {
+ vsn += "-" + gitCommit[:8]
+ }
+ if (version.Meta != "stable") && (gitDate != "") {
+ vsn += "-" + gitDate
+ }
+ return vsn
+}
diff --git a/params/version.go b/version/version.go
similarity index 51%
rename from params/version.go
rename to version/version.go
index 92dd888b0d..da413de079 100644
--- a/params/version.go
+++ b/version/version.go
@@ -1,4 +1,4 @@
-// Copyright 2016 The go-ethereum Authors
+// Copyright 2024 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
@@ -14,32 +14,11 @@
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see .
-package params
-
-import (
- "fmt"
-)
+package version
const (
- VersionMajor = 2 // Major version component of the current release
- VersionMinor = 6 // Minor version component of the current release
- VersionPatch = 1 // Patch version component of the current release
- VersionMeta = "beta" // Version metadata to append to the version string
+ Major = 2 // Major version component of the current release
+ Minor = 6 // Minor version component of the current release
+ Patch = 5 // Patch version component of the current release
+ Meta = "testnet" // Version metadata to append to the version string
)
-
-// Version holds the textual version string.
-var Version = func() string {
- v := fmt.Sprintf("%d.%d.%d", VersionMajor, VersionMinor, VersionPatch)
- if VersionMeta != "" {
- v += "-" + VersionMeta
- }
- return v
-}()
-
-func VersionWithCommit(gitCommit string) string {
- vsn := Version
- if len(gitCommit) >= 8 {
- vsn += "-" + gitCommit[:8]
- }
- return vsn
-}