-
Notifications
You must be signed in to change notification settings - Fork 0
Developers' Guide
We assuming that you have go
installed, GOPATH
is set.
Note:You must have your working copy under $GOPATH/src/github.com/ethereum/go-ethereum
.
Since go
does not use relative path for import, in working in any other directory will have no effect, since the import paths will be appended to $GOPATH/src
, and if the lib does not exist, the version at master HEAD will be downloaded.
Most likely you will be working from your fork of go-ethereum
, let's say from github.com/nirname/go-ethereum
. Clone or move your fork into the right place:
git clone [email protected]:nirname/go-ethereum.git $GOPATH/src/github.com/ethereum/go-ethereum
As of POC-8, go-ethereum uses Godep to manage dependencies.
Istall godep:
go get github.com/tools/godep
Make sure that go binaries are on your executable path:
PATH=$GOPATH/bin:$PATH
godep
should be prepended to all go calls build
, install
and test
.
Alternatively, you can prepend the go-ethereum Godeps directory to your current GOPATH
:
GOPATH=`godep path`:$GOPATH
Switch to the go-ethereum repository root directory (Godep expects a local Godeps folder ).
Each wrapper/executable found in
the cmd
directory can be built individually.
To build the CLI:
godep go build -v ./cmd/ethereum
For the GUI, you need to install QT5
and set variables.
On OSX with a brew install of qt5
:
export PKG_CONFIG_PATH=/usr/local/Cellar/qt5/5.4.0/lib/pkgconfig
export CGO_CPPFLAGS=-I/usr/local/Cellar/qt5/5.4.0/include/QtCore/5.4.0/QtCore
export LD_LIBRARY_PATH=/usr/local/Cellar/qt5/5.4.0/lib
See the instructions on the wiki
With these prerequisites in place, compile mist
with:
godep go build -v ./cmd/mist
Mist does not automatically look in the right location for its GUI assets. For this reason you need to launch it from its build directory
cd $GOPATH/src/github.com/ethereum/go-ethereum/cmd/mist && mist
or supply an absolute -asset_path
option:
mist -asset_path $GOPATH/src/github.com/ethereum/go-ethereum/cmd/mist/assets
Testing one library:
godep go -v -cpu 4 test ./eth
Using options -cpu
(number of cores allowed) and -v
(logging even if no error) is recommended.
Testing only some methods:
godep go -v -cpu 4 test ./eth -run TestMethod
Note: here all tests with prefix TestMethod will be run, so if you got TestMethod, TestMethod1, then both!
Running benchmarks, eg.:
cd bzz
godep go test -v -cpu 4 -bench . -run BenchmarkJoin
for more see go test flags
To update a dependency version (for example, to include a new upstream fix), run
go get -u <foo/bar>
godep update <foo/...>
To track a new dependency, add it to the project as normal than run
godep save ./...
Changes to the Godeps folder should be manually verified then commited.
To make life easier try git flow it sets this all up and streamlines your work flow.