We build our binaries using
go build -tags=embed -v. This allows gorocksdb to embed RocksDB into the binary. Then it can be run on any instance without the need to even install RocksDB.
The funny thing is that if I delete
c-lz4 from my vendor and they aren’t even in my
GOPATH, then also the above command succeeds and result in a much smaller binary size which is also built pretty fast.
rm -rf vendor/github.com/cockroachdb
➜ dgraph git:(master) ✗ go build -tags=embed -v . github.com/dgraph-io/dgraph/vendor/github.com/google/flatbuffers/go github.com/dgraph-io/dgraph/vendor/github.com/tecbot/gorocksdb github.com/dgraph-io/dgraph/lex github.com/dgraph-io/dgraph/commit github.com/dgraph-io/dgraph/gql github.com/dgraph-io/dgraph/vendor/github.com/zond/gotomic github.com/dgraph-io/dgraph/vendor/github.com/golang/protobuf/proto github.com/dgraph-io/dgraph/posting/types github.com/dgraph-io/dgraph/task github.com/dgraph-io/dgraph/x github.com/dgraph-io/dgraph/vendor/google.golang.org/grpc/credentials github.com/dgraph-io/dgraph/vendor/google.golang.org/grpc/naming github.com/dgraph-io/dgraph/vendor/github.com/gogo/protobuf/proto github.com/dgraph-io/dgraph/vendor/google.golang.org/grpc/peer github.com/dgraph-io/dgraph/vendor/google.golang.org/grpc/transport github.com/dgraph-io/dgraph/vendor/google.golang.org/grpc github.com/dgraph-io/dgraph/query/graph github.com/dgraph-io/dgraph/store github.com/dgraph-io/dgraph/posting github.com/dgraph-io/dgraph/uid github.com/dgraph-io/dgraph/worker github.com/dgraph-io/dgraph/rdf github.com/dgraph-io/dgraph/query github.com/dgraph-io/dgraph/cmd/dgraph
The size of the binary that is built is 18M. Verified on a couple of Mac which didn’t have RocksDB that it worked. I suppose it uses the RocksDB installed on my machine somehow for embedding.
Without deleting the size of the binary is 55M and takes much longer to build. In this case the major time is spent on embedding
c-rocksdb. Have to dig deeper into gorocksdb to understand whats happening here.