Merge pull request #909 from filecoin-project/feat/version2

Refactor versions
This commit is contained in:
Łukasz Magiera 2019-12-17 12:17:57 +01:00 committed by GitHub
commit e2fd292ead
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 42 additions and 33 deletions

View File

@ -4,10 +4,9 @@ import (
"context"
"fmt"
"github.com/filecoin-project/lotus/build"
"github.com/libp2p/go-libp2p-core/network"
"github.com/libp2p/go-libp2p-core/peer"
"github.com/filecoin-project/lotus/build"
)
type Permission = string
@ -40,7 +39,7 @@ type Version struct {
// this api
//
// See APIVersion in build/version.go
APIVersion uint32
APIVersion build.Version
// TODO: git commit / os / genesis cid?
@ -49,6 +48,5 @@ type Version struct {
}
func (v Version) String() string {
vM, vm, vp := build.VersionInts(v.APIVersion)
return fmt.Sprintf("%s+api%d.%d.%d", v.Version, vM, vm, vp)
return fmt.Sprintf("%s+api%s", v.Version, v.APIVersion.String())
}

View File

@ -50,7 +50,7 @@ func (ts *testSuite) testVersion(t *testing.T) {
if err != nil {
t.Fatal(err)
}
if v.Version != build.Version {
if v.Version != build.BuildVersion {
t.Error("Version didn't work properly")
}
}

View File

@ -1,34 +1,44 @@
package build
import "fmt"
var CurrentCommit string
// Version is the local build version, set by build system
const Version = "0.1.2"
// BuildVersion is the local build version, set by build system
const BuildVersion = "0.1.2"
var UserVersion = Version + CurrentCommit
var UserVersion = BuildVersion + CurrentCommit
// APIVersion is a hex semver version of the rpc api exposed
//
// M M P
// A I A
// J N T
// O O C
// R R H
// |\vv/|
// vv vv
const APIVersion = 0x000102
type Version uint32
func newVer(major, minor, patch uint8) Version {
return Version(uint32(major)<<16 | uint32(minor)<<8 | uint32(patch))
}
// 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)
}
func (ve Version) EqMajorMinor(v2 Version) bool {
return ve&minorMask == v2&minorMask
}
// APIVersion is a semver version of the rpc api exposed
var APIVersion Version = newVer(0, 1, 2)
const (
MajorMask = 0xff0000
MinorMask = 0xffff00
PatchMask = 0xffffff
majorMask = 0xff0000
minorMask = 0xffff00
patchMask = 0xffffff
MajorOnlyMask = 0xff0000
MinorOnlyMask = 0x00ff00
PatchOnlyMask = 0x0000ff
majorOnlyMask = 0xff0000
minorOnlyMask = 0x00ff00
patchOnlyMask = 0x0000ff
)
// VersionInts returns (major, minor, patch) versions
func VersionInts(version uint32) (uint32, uint32, uint32) {
return (version & MajorOnlyMask) >> 16, (version & MinorOnlyMask) >> 8, version & PatchOnlyMask
}

View File

@ -25,7 +25,7 @@ func main() {
app := &cli.App{
Name: "lotus-shed",
Usage: "A place for all the lotus tools",
Version: build.Version,
Version: build.BuildVersion,
Commands: local,
}

View File

@ -136,7 +136,7 @@ var initCmd = &cli.Command{
return err
}
if v.APIVersion&build.MinorMask != build.APIVersion&build.MinorMask {
if v.APIVersion.EqMajorMinor(build.APIVersion) {
return xerrors.Errorf("Remote API version didn't match (local %x, remote %x)", build.APIVersion, v.APIVersion)
}

View File

@ -2,6 +2,7 @@ package impl
import (
"context"
"github.com/gbrlsnchs/jwt/v3"
"github.com/libp2p/go-libp2p-core/host"
"github.com/libp2p/go-libp2p-core/network"
@ -84,7 +85,7 @@ func (a *CommonAPI) ID(context.Context) (peer.ID, error) {
func (a *CommonAPI) Version(context.Context) (api.Version, error) {
return api.Version{
Version: build.Version,
Version: build.UserVersion,
APIVersion: build.APIVersion,
BlockDelay: build.BlockDelay,