Skip to content

Commit 3e82a8b

Browse files
Alessio Tregliacwgoes
authored andcommitted
Merge PR #3792: Use DBBackend set at compile time
* use DBBackend set at compile time Closes: #3719 * Refresh changelog * Tweak Makefile
1 parent c7f6a3e commit 3e82a8b

File tree

9 files changed

+96
-54
lines changed

9 files changed

+96
-54
lines changed

Makefile

Lines changed: 38 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,24 @@ PACKAGES_NOSIMULATION=$(shell go list ./... | grep -v '/simulation')
22
PACKAGES_SIMTEST=$(shell go list ./... | grep '/simulation')
33
VERSION := $(shell echo $(shell git describe --tags) | sed 's/^v//')
44
COMMIT := $(shell git log -1 --format='%H')
5-
BUILD_TAGS = netgo
65
CAT := $(if $(filter $(OS),Windows_NT),type,cat)
7-
BUILD_FLAGS = -tags "$(BUILD_TAGS)" -ldflags \
8-
'-X github.com/cosmos/cosmos-sdk/version.Version=$(VERSION) \
9-
-X github.com/cosmos/cosmos-sdk/version.Commit=$(COMMIT) \
10-
-X github.com/cosmos/cosmos-sdk/version.VendorDirHash=$(shell $(CAT) vendor-deps) \
11-
-X "github.com/cosmos/cosmos-sdk/version.BuildTags=$(BUILD_TAGS)"'
126
LEDGER_ENABLED ?= true
137
GOTOOLS = \
148
github.com/golang/dep/cmd/dep \
159
github.com/alecthomas/gometalinter \
1610
github.com/rakyll/statik
1711
GOBIN ?= $(GOPATH)/bin
1812

19-
all: devtools vendor-deps install test_lint test
20-
21-
# The below include contains the tools target.
22-
include scripts/Makefile
23-
24-
########################################
25-
### CI
26-
27-
ci: devtools vendor-deps install test_cover test_lint test
28-
29-
########################################
30-
### Build/Install
13+
# process build tags
3114

15+
build_tags = netgo
3216
ifeq ($(LEDGER_ENABLED),true)
3317
ifeq ($(OS),Windows_NT)
3418
GCCEXE = $(shell where gcc.exe 2> NUL)
3519
ifeq ($(GCCEXE),)
3620
$(error gcc.exe not installed for ledger support, please install or set LEDGER_ENABLED=false)
3721
else
38-
BUILD_TAGS += ledger
22+
build_tags += ledger
3923
endif
4024
else
4125
UNAME_S = $(shell uname -s)
@@ -46,12 +30,46 @@ ifeq ($(LEDGER_ENABLED),true)
4630
ifeq ($(GCC),)
4731
$(error gcc not installed for ledger support, please install or set LEDGER_ENABLED=false)
4832
else
49-
BUILD_TAGS += ledger
33+
build_tags += ledger
5034
endif
5135
endif
5236
endif
5337
endif
5438

39+
ifeq ($(WITH_CLEVELDB),yes)
40+
build_tags += gcc
41+
endif
42+
build_tags += $(BUILD_TAGS)
43+
build_tags := $(strip $(build_tags))
44+
45+
# process linker flags
46+
47+
ldflags = -X github.com/cosmos/cosmos-sdk/version.Version=$(VERSION) \
48+
-X github.com/cosmos/cosmos-sdk/version.Commit=$(COMMIT) \
49+
-X github.com/cosmos/cosmos-sdk/version.VendorDirHash=$(shell $(CAT) vendor-deps) \
50+
-X "github.com/cosmos/cosmos-sdk/version.BuildTags=$(build_tags)"
51+
52+
ifeq ($(WITH_CLEVELDB),yes)
53+
ldflags += -X github.com/cosmos/cosmos-sdk/types.DBBackend=cleveldb
54+
endif
55+
ldflags += $(LDFLAGS)
56+
ldflags := $(strip $(ldflags))
57+
58+
BUILD_FLAGS := -tags "$(build_tags)" -ldflags '$(ldflags)'
59+
60+
all: devtools vendor-deps install test_lint test
61+
62+
# The below include contains the tools target.
63+
include scripts/Makefile
64+
65+
########################################
66+
### CI
67+
68+
ci: devtools vendor-deps install test_cover test_lint test
69+
70+
########################################
71+
### Build/Install
72+
5573
build:
5674
ifeq ($(OS),Windows_NT)
5775
go build $(BUILD_FLAGS) -o build/gaiad.exe ./cmd/gaia/cmd/gaiad

PENDING.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ tags.
4040

4141
### SDK
4242

43+
* [\#3719](https://github.com/cosmos/cosmos-sdk/issues/3719) DBBackend can now be set at compile time.
44+
Defaults: goleveldb. Supported: cleveldb.
45+
4346
### Tendermint
4447

4548
<!------------------------------- IMPROVEMENTS ------------------------------->

cmd/gaia/app/sim_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ func BenchmarkFullGaiaSimulation(b *testing.B) {
305305

306306
var db dbm.DB
307307
dir, _ := ioutil.TempDir("", "goleveldb-gaia-sim")
308-
db, _ = dbm.NewGoLevelDB("Simulation", dir)
308+
db, _ = sdk.NewLevelDB("Simulation", dir)
309309
defer func() {
310310
db.Close()
311311
os.RemoveAll(dir)
@@ -347,7 +347,7 @@ func TestFullGaiaSimulation(t *testing.T) {
347347
}
348348
var db dbm.DB
349349
dir, _ := ioutil.TempDir("", "goleveldb-gaia-sim")
350-
db, _ = dbm.NewGoLevelDB("Simulation", dir)
350+
db, _ = sdk.NewLevelDB("Simulation", dir)
351351
defer func() {
352352
db.Close()
353353
os.RemoveAll(dir)
@@ -388,7 +388,7 @@ func TestGaiaImportExport(t *testing.T) {
388388
}
389389
var db dbm.DB
390390
dir, _ := ioutil.TempDir("", "goleveldb-gaia-sim")
391-
db, _ = dbm.NewGoLevelDB("Simulation", dir)
391+
db, _ = sdk.NewLevelDB("Simulation", dir)
392392
defer func() {
393393
db.Close()
394394
os.RemoveAll(dir)
@@ -421,7 +421,7 @@ func TestGaiaImportExport(t *testing.T) {
421421
fmt.Printf("Importing genesis...\n")
422422

423423
newDir, _ := ioutil.TempDir("", "goleveldb-gaia-sim-2")
424-
newDB, _ := dbm.NewGoLevelDB("Simulation-2", dir)
424+
newDB, _ := sdk.NewLevelDB("Simulation-2", dir)
425425
defer func() {
426426
newDB.Close()
427427
os.RemoveAll(newDir)
@@ -483,7 +483,7 @@ func TestGaiaSimulationAfterImport(t *testing.T) {
483483
logger = log.NewNopLogger()
484484
}
485485
dir, _ := ioutil.TempDir("", "goleveldb-gaia-sim")
486-
db, _ := dbm.NewGoLevelDB("Simulation", dir)
486+
db, _ := sdk.NewLevelDB("Simulation", dir)
487487
defer func() {
488488
db.Close()
489489
os.RemoveAll(dir)
@@ -525,7 +525,7 @@ func TestGaiaSimulationAfterImport(t *testing.T) {
525525
fmt.Printf("Importing genesis...\n")
526526

527527
newDir, _ := ioutil.TempDir("", "goleveldb-gaia-sim-2")
528-
newDB, _ := dbm.NewGoLevelDB("Simulation-2", dir)
528+
newDB, _ := sdk.NewLevelDB("Simulation-2", dir)
529529
defer func() {
530530
newDB.Close()
531531
os.RemoveAll(newDir)

cmd/gaia/cmd/gaiadebug/hack.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ func runHackCmd(cmd *cobra.Command, args []string) error {
4545

4646
// load the app
4747
logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout))
48-
db, err := dbm.NewGoLevelDB("gaia", dataDir)
48+
db, err := sdk.NewLevelDB("gaia", dataDir)
4949
if err != nil {
5050
fmt.Println(err)
5151
os.Exit(1)

cmd/gaia/cmd/gaiareplay/main.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ import (
1515
abci "github.com/tendermint/tendermint/abci/types"
1616
bcm "github.com/tendermint/tendermint/blockchain"
1717
cmn "github.com/tendermint/tendermint/libs/common"
18-
dbm "github.com/tendermint/tendermint/libs/db"
1918
"github.com/tendermint/tendermint/proxy"
2019
tmsm "github.com/tendermint/tendermint/state"
2120
tm "github.com/tendermint/tendermint/types"
2221

2322
"github.com/cosmos/cosmos-sdk/baseapp"
2423
"github.com/cosmos/cosmos-sdk/cmd/gaia/app"
2524
"github.com/cosmos/cosmos-sdk/server"
25+
sdk "github.com/cosmos/cosmos-sdk/types"
2626
)
2727

2828
var (
@@ -72,22 +72,22 @@ func run(rootDir string) {
7272
// App DB
7373
// appDB := dbm.NewMemDB()
7474
fmt.Println("Opening app database")
75-
appDB, err := dbm.NewGoLevelDB("application", dataDir)
75+
appDB, err := sdk.NewLevelDB("application", dataDir)
7676
if err != nil {
7777
panic(err)
7878
}
7979

8080
// TM DB
8181
// tmDB := dbm.NewMemDB()
8282
fmt.Println("Opening tendermint state database")
83-
tmDB, err := dbm.NewGoLevelDB("state", dataDir)
83+
tmDB, err := sdk.NewLevelDB("state", dataDir)
8484
if err != nil {
8585
panic(err)
8686
}
8787

8888
// Blockchain DB
8989
fmt.Println("Opening blockstore database")
90-
bcDB, err := dbm.NewGoLevelDB("blockstore", dataDir)
90+
bcDB, err := sdk.NewLevelDB("blockstore", dataDir)
9191
if err != nil {
9292
panic(err)
9393
}

crypto/keys/lazy_keybase.go

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@ import (
55

66
"github.com/tendermint/tendermint/crypto"
77
cmn "github.com/tendermint/tendermint/libs/common"
8-
dbm "github.com/tendermint/tendermint/libs/db"
98

109
"github.com/cosmos/cosmos-sdk/crypto/keys/hd"
11-
"github.com/cosmos/cosmos-sdk/types"
10+
sdk "github.com/cosmos/cosmos-sdk/types"
1211
)
1312

1413
var _ Keybase = lazyKeybase{}
@@ -28,7 +27,7 @@ func New(name, dir string) Keybase {
2827
}
2928

3029
func (lkb lazyKeybase) List() ([]Info, error) {
31-
db, err := dbm.NewGoLevelDB(lkb.name, lkb.dir)
30+
db, err := sdk.NewLevelDB(lkb.name, lkb.dir)
3231
if err != nil {
3332
return nil, err
3433
}
@@ -38,7 +37,7 @@ func (lkb lazyKeybase) List() ([]Info, error) {
3837
}
3938

4039
func (lkb lazyKeybase) Get(name string) (Info, error) {
41-
db, err := dbm.NewGoLevelDB(lkb.name, lkb.dir)
40+
db, err := sdk.NewLevelDB(lkb.name, lkb.dir)
4241
if err != nil {
4342
return nil, err
4443
}
@@ -47,8 +46,8 @@ func (lkb lazyKeybase) Get(name string) (Info, error) {
4746
return newDbKeybase(db).Get(name)
4847
}
4948

50-
func (lkb lazyKeybase) GetByAddress(address types.AccAddress) (Info, error) {
51-
db, err := dbm.NewGoLevelDB(lkb.name, lkb.dir)
49+
func (lkb lazyKeybase) GetByAddress(address sdk.AccAddress) (Info, error) {
50+
db, err := sdk.NewLevelDB(lkb.name, lkb.dir)
5251
if err != nil {
5352
return nil, err
5453
}
@@ -58,7 +57,7 @@ func (lkb lazyKeybase) GetByAddress(address types.AccAddress) (Info, error) {
5857
}
5958

6059
func (lkb lazyKeybase) Delete(name, passphrase string, skipPass bool) error {
61-
db, err := dbm.NewGoLevelDB(lkb.name, lkb.dir)
60+
db, err := sdk.NewLevelDB(lkb.name, lkb.dir)
6261
if err != nil {
6362
return err
6463
}
@@ -68,7 +67,7 @@ func (lkb lazyKeybase) Delete(name, passphrase string, skipPass bool) error {
6867
}
6968

7069
func (lkb lazyKeybase) Sign(name, passphrase string, msg []byte) ([]byte, crypto.PubKey, error) {
71-
db, err := dbm.NewGoLevelDB(lkb.name, lkb.dir)
70+
db, err := sdk.NewLevelDB(lkb.name, lkb.dir)
7271
if err != nil {
7372
return nil, nil, err
7473
}
@@ -78,7 +77,7 @@ func (lkb lazyKeybase) Sign(name, passphrase string, msg []byte) ([]byte, crypto
7877
}
7978

8079
func (lkb lazyKeybase) CreateMnemonic(name string, language Language, passwd string, algo SigningAlgo) (info Info, seed string, err error) {
81-
db, err := dbm.NewGoLevelDB(lkb.name, lkb.dir)
80+
db, err := sdk.NewLevelDB(lkb.name, lkb.dir)
8281
if err != nil {
8382
return nil, "", err
8483
}
@@ -88,7 +87,7 @@ func (lkb lazyKeybase) CreateMnemonic(name string, language Language, passwd str
8887
}
8988

9089
func (lkb lazyKeybase) CreateAccount(name, mnemonic, bip39Passwd, encryptPasswd string, account uint32, index uint32) (Info, error) {
91-
db, err := dbm.NewGoLevelDB(lkb.name, lkb.dir)
90+
db, err := sdk.NewLevelDB(lkb.name, lkb.dir)
9291
if err != nil {
9392
return nil, err
9493
}
@@ -98,7 +97,7 @@ func (lkb lazyKeybase) CreateAccount(name, mnemonic, bip39Passwd, encryptPasswd
9897
}
9998

10099
func (lkb lazyKeybase) Derive(name, mnemonic, bip39Passwd, encryptPasswd string, params hd.BIP44Params) (Info, error) {
101-
db, err := dbm.NewGoLevelDB(lkb.name, lkb.dir)
100+
db, err := sdk.NewLevelDB(lkb.name, lkb.dir)
102101
if err != nil {
103102
return nil, err
104103
}
@@ -108,7 +107,7 @@ func (lkb lazyKeybase) Derive(name, mnemonic, bip39Passwd, encryptPasswd string,
108107
}
109108

110109
func (lkb lazyKeybase) CreateLedger(name string, algo SigningAlgo, account uint32, index uint32) (info Info, err error) {
111-
db, err := dbm.NewGoLevelDB(lkb.name, lkb.dir)
110+
db, err := sdk.NewLevelDB(lkb.name, lkb.dir)
112111
if err != nil {
113112
return nil, err
114113
}
@@ -118,7 +117,7 @@ func (lkb lazyKeybase) CreateLedger(name string, algo SigningAlgo, account uint3
118117
}
119118

120119
func (lkb lazyKeybase) CreateOffline(name string, pubkey crypto.PubKey) (info Info, err error) {
121-
db, err := dbm.NewGoLevelDB(lkb.name, lkb.dir)
120+
db, err := sdk.NewLevelDB(lkb.name, lkb.dir)
122121
if err != nil {
123122
return nil, err
124123
}
@@ -128,7 +127,7 @@ func (lkb lazyKeybase) CreateOffline(name string, pubkey crypto.PubKey) (info In
128127
}
129128

130129
func (lkb lazyKeybase) CreateMulti(name string, pubkey crypto.PubKey) (info Info, err error) {
131-
db, err := dbm.NewGoLevelDB(lkb.name, lkb.dir)
130+
db, err := sdk.NewLevelDB(lkb.name, lkb.dir)
132131
if err != nil {
133132
return nil, err
134133
}
@@ -138,7 +137,7 @@ func (lkb lazyKeybase) CreateMulti(name string, pubkey crypto.PubKey) (info Info
138137
}
139138

140139
func (lkb lazyKeybase) Update(name, oldpass string, getNewpass func() (string, error)) error {
141-
db, err := dbm.NewGoLevelDB(lkb.name, lkb.dir)
140+
db, err := sdk.NewLevelDB(lkb.name, lkb.dir)
142141
if err != nil {
143142
return err
144143
}
@@ -148,7 +147,7 @@ func (lkb lazyKeybase) Update(name, oldpass string, getNewpass func() (string, e
148147
}
149148

150149
func (lkb lazyKeybase) Import(name string, armor string) (err error) {
151-
db, err := dbm.NewGoLevelDB(lkb.name, lkb.dir)
150+
db, err := sdk.NewLevelDB(lkb.name, lkb.dir)
152151
if err != nil {
153152
return err
154153
}
@@ -158,7 +157,7 @@ func (lkb lazyKeybase) Import(name string, armor string) (err error) {
158157
}
159158

160159
func (lkb lazyKeybase) ImportPubKey(name string, armor string) (err error) {
161-
db, err := dbm.NewGoLevelDB(lkb.name, lkb.dir)
160+
db, err := sdk.NewLevelDB(lkb.name, lkb.dir)
162161
if err != nil {
163162
return err
164163
}
@@ -168,7 +167,7 @@ func (lkb lazyKeybase) ImportPubKey(name string, armor string) (err error) {
168167
}
169168

170169
func (lkb lazyKeybase) Export(name string) (armor string, err error) {
171-
db, err := dbm.NewGoLevelDB(lkb.name, lkb.dir)
170+
db, err := sdk.NewLevelDB(lkb.name, lkb.dir)
172171
if err != nil {
173172
return "", err
174173
}
@@ -178,7 +177,7 @@ func (lkb lazyKeybase) Export(name string) (armor string, err error) {
178177
}
179178

180179
func (lkb lazyKeybase) ExportPubKey(name string) (armor string, err error) {
181-
db, err := dbm.NewGoLevelDB(lkb.name, lkb.dir)
180+
db, err := sdk.NewLevelDB(lkb.name, lkb.dir)
182181
if err != nil {
183182
return "", err
184183
}
@@ -188,7 +187,7 @@ func (lkb lazyKeybase) ExportPubKey(name string) (armor string, err error) {
188187
}
189188

190189
func (lkb lazyKeybase) ExportPrivateKeyObject(name string, passphrase string) (crypto.PrivKey, error) {
191-
db, err := dbm.NewGoLevelDB(lkb.name, lkb.dir)
190+
db, err := sdk.NewLevelDB(lkb.name, lkb.dir)
192191
if err != nil {
193192
return nil, err
194193
}

server/constructors.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"os"
77
"path/filepath"
88

9+
sdk "github.com/cosmos/cosmos-sdk/types"
910
abci "github.com/tendermint/tendermint/abci/types"
1011
dbm "github.com/tendermint/tendermint/libs/db"
1112
"github.com/tendermint/tendermint/libs/log"
@@ -24,7 +25,7 @@ type (
2425

2526
func openDB(rootDir string) (dbm.DB, error) {
2627
dataDir := filepath.Join(rootDir, "data")
27-
db, err := dbm.NewGoLevelDB("application", dataDir)
28+
db, err := sdk.NewLevelDB("application", dataDir)
2829
return db, err
2930
}
3031

0 commit comments

Comments
 (0)