lotus/build/version.go

107 lines
1.9 KiB
Go
Raw Normal View History

package build
import (
"fmt"
"golang.org/x/xerrors"
)
var CurrentCommit string
2020-06-01 18:43:51 +00:00
var BuildType int
const (
2021-01-20 06:47:27 +00:00
BuildDefault = 0
BuildMainnet = 0x1
Build2k = 0x2
BuildDebug = 0x3
BuildCalibnet = 0x4
2020-06-01 18:43:51 +00:00
)
func buildType() string {
switch BuildType {
case BuildDefault:
2020-06-01 19:11:37 +00:00
return ""
2021-01-20 06:47:27 +00:00
case BuildMainnet:
return "+mainnet"
2020-06-01 18:43:51 +00:00
case Build2k:
return "+2k"
2021-01-20 06:47:27 +00:00
case BuildDebug:
return "+debug"
case BuildCalibnet:
return "+calibnet"
2020-06-01 18:43:51 +00:00
default:
return "+huh?"
}
}
// BuildVersion is the local build version, set by build system
2021-01-20 08:35:52 +00:00
const BuildVersion = "1.4.1"
2020-06-01 18:43:51 +00:00
func UserVersion() string {
return BuildVersion + buildType() + CurrentCommit
}
type Version uint32
func newVer(major, minor, patch uint8) Version {
return Version(uint32(major)<<16 | uint32(minor)<<8 | uint32(patch))
}
2019-12-11 00:22:58 +00:00
// Ints returns (major, minor, patch) versions
func (ve Version) Ints() (uint32, uint32, uint32) {
v := uint32(ve)
return (v & majorOnlyMask) >> 16, (v & minorOnlyMask) >> 8, v & patchOnlyMask
}
func (ve Version) String() string {
vmj, vmi, vp := ve.Ints()
return fmt.Sprintf("%d.%d.%d", vmj, vmi, vp)
}
2019-12-17 15:16:57 +00:00
func (ve Version) EqMajorMinor(v2 Version) bool {
return ve&minorMask == v2&minorMask
2019-12-17 15:16:57 +00:00
}
type NodeType int
const (
NodeUnknown NodeType = iota
NodeFull
NodeMiner
NodeWorker
)
var RunningNodeType NodeType
func VersionForType(nodeType NodeType) (Version, error) {
switch nodeType {
case NodeFull:
return FullAPIVersion, nil
case NodeMiner:
return MinerAPIVersion, nil
case NodeWorker:
return WorkerAPIVersion, nil
default:
return Version(0), xerrors.Errorf("unknown node type %d", nodeType)
}
}
// semver versions of the rpc api exposed
var (
2020-11-17 11:04:06 +00:00
FullAPIVersion = newVer(1, 0, 0)
2021-01-14 11:41:27 +00:00
MinerAPIVersion = newVer(1, 0, 1)
2020-11-17 11:04:06 +00:00
WorkerAPIVersion = newVer(1, 0, 0)
)
//nolint:varcheck,deadcode
const (
majorMask = 0xff0000
minorMask = 0xffff00
patchMask = 0xffffff
majorOnlyMask = 0xff0000
minorOnlyMask = 0x00ff00
patchOnlyMask = 0x0000ff
)